【发布时间】:2017-03-02 17:39:24
【问题描述】:
我正在使用 Angular2 (2.1.0) 最终版本。
我在使用...进行单元测试时通过 AppModule 导入所有组件
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [AppModule],
...
但是,这使得测试运行缓慢。
我现在只列出我需要的组件如下...
beforeEach(async(() => {
// noinspection JSUnusedGlobalSymbols
TestBed.configureTestingModule({
imports: [BrowserModule, FormsModule, HttpModule], // modules
declarations: [
// pipes
AttributeCheckPipe,
// directives
// DatePickerDirective,
...
但是,我有很多很多组件,我不确定要导入哪些组件。测试输出没有告诉我需要导入哪些。它只是简单地通过(当我将它们全部导入时)或失败(如果我不这样做),但它没有告诉我需要哪些。
这个错误很烦人/没用..
invokeTask@node_modules/zone.js/dist/zone.min.js:1:36996
onInvokeTask@node_modules/zone.js/dist/proxy.min.js:1:2190
invokeTask@node_modules/zone.js/dist/zone.min.js:1:36939
runTask@node_modules/zone.js/dist/zone.min.js:1:31466
a@node_modules/zone.js/dist/zone.min.js:1:17818
g@node_modules/core-js/client/shim.min.js:8:19058
node_modules/core-js/client/shim.min.js:8:19180
k@node_modules/core-js/client/shim.min.js:8:14294
l@node_modules/zone.js/dist/zone.min.js:1:18418
l@node_modules/zone.js/dist/zone.min.js:1:18175
node_modules/zone.js/dist/zone.min.js:1:18715
如何获得有关我未能导入哪些组件的反馈?谢谢
我正在使用 Karma 和 PhantomJS。
我的 Karma 配置摘录是 ..
client: {
captureConsole: true
},
logLevel: config.LOG_DEBUG
【问题讨论】:
-
要回答这个问题,我们需要查看您的组件及其模板
-
啊好吧,我明白为什么了,你想看看我在测试的组件中导入了哪些“其他”组件/管道等?我在模板中使用了哪些组件?这些组件也使用了哪些组件?我在想正确的路线吗?有没有更简单的方法可以让日志告诉您忘记了什么?
-
差不多。通常,当您尝试加载组件并在测试声明中说您缺少指令时,它会给您一个模板解析错误,它找不到元素的绑定。类似的东西。但通常你应该已经知道你需要什么。你创建了组件并且知道你使用了什么
-
您不需要的一件事是
BrowserModule。测试台会自动导入CommonModule,因此您可以使用*ngIf和*ngFor等常见的东西,以及常见的管道。 -
仍在挣扎,zoneJs 吞下错误,所以我真的不知道该怎么办。我列出了所有组件并成功删除了 1 或 2,但如果我删除任何其他组件,则会导致失败
标签: angular typescript unit-testing karma-runner