2017-03-03 62 views
1

我刚刚开始使用Angular2,但我尝试测试我编写的每个组件。测试具有传递依赖性的Angular2组件

当我编写组件测试时,我必须初始化TestBed,以便测试组件可以解决所有(传递)依赖关系。

现在我能想到的三种方法

  1. 含试验下的部件导入整个模块 - 它应该申报或导入所有必需的依赖
  2. 显式声明的测试代码
  3. 模拟所有所有的依赖依赖关系 - 所以他们没有自己的依赖关系

我想第一个解决方案可能会导致问题,当我需要嘲笑的东西,在主模块中声明。第二个需要我手动更改所有依赖测试,当我尝试添加任何新的依赖关系组件。我没有测试第三个,所以我不知道它是否可行。

处理这个问题的最佳方法是什么?

回答

0

我实现了与原始相同的选择器和输入,但没有逻辑的依赖组件的模拟。

这样我就可以独立地测试我的组件 - 检查它是否正确使用了依赖组件,但不关心任何传递依赖和其他实现细节。

我的灵感来自于:angular2 test, how do I mock sub component

+0

虽然这是它有很多的限制,因为你只是嘲讽标签不更换类的实现本身一个有效的方法。像这样的东西不会工作。 '@ViewChild(SubComponent)sc;然后再调用sc.callFn()'。由于模拟实现具有不同的类名,所以Testbed注入器将永远不会找到这个类。 – Julian