【发布时间】:2017-10-13 09:21:57
【问题描述】:
我有一个带有顶级模块AppModule 的 Angular (4.x) 应用程序,它声明了几个自定义组件,因此它们可以在模板中使用。
但是,对于 jasmine/karma 测试,最常见的方法似乎是使用 BrowserDynamicTestingModule 并在 beforeEach 期间声明任何所需的自定义组件,例如:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent, SomeDependedUponComponent ]
})
.compileComponents();
}));
考虑到我们无论如何都在模拟主应用程序的环境,为什么不直接用AppModule 初始化testBed,这样每个自定义组件都可用于所有测试?比如:
getTestBed().initTestEnvironment(
[BrowserDynamicTestingModule, AppModule],
platformBrowserDynamicTesting()
);
如果我没有遗漏什么,这更接近于主应用程序的设置,甚至可以减少单个规范/测试文件中的样板代码。或者有什么缺点,比如性能损失?
【问题讨论】:
-
考虑到我们正在模拟主应用程序的环境 - 我们当然不是。
标签: angular unit-testing jasmine karma-runner