Angular 2.0.0 - 测试“由模块'DynamicTestModule'导入”

Posted

技术标签:

【中文标题】Angular 2.0.0 - 测试“由模块\'DynamicTestModule\'导入”【英文标题】:Angular 2.0.0 - Testing " imported by the module 'DynamicTestModule' "Angular 2.0.0 - 测试“由模块'DynamicTestModule'导入” 【发布时间】:2017-02-22 04:57:19 【问题描述】:

我在 Angular 2 中测试 app.component.ts 时遇到问题。我正在使用 angular-cli。每当我运行 ng test 时,我的 app.component.spec.ts 都会在控制台提示错误:

 Failed: Unexpected directive 'HomeModuleComponent' imported by the module 'DynamicTestModule'
 Error: Unexpected directive 'HomeModuleComponent' imported by the module 'DynamicTestModule'

我在 TestBed 中导入了 HomeModuleComponent

TestBed.configureTestingModule(
  declarations: [AppComponent],
  imports : [ HomeModuleComponent ]
);

谁能帮我解决这个问题?

【问题讨论】:

我想我现在已经找到了问题所在。 HomeModuleComponent 必须在声明中而不是在导入中。此外,您可以在您的 TestBed 中导入模块吗?谢谢。 【参考方案1】:

HomeModuleComponentComponent 而不是 Module,所以它必须在声明中:

TestBed.configureTestingModule(
  declarations: [AppComponent, HomeModuleComponent],
  imports : [ ]
);

然后您可以创建要测试的组件,

TestBed.createComponent(AppComponent);

【讨论】:

【参考方案2】:

在我的测试规范中,我错误地导入了 service 而不是提供它。我遇到了同样的错误。

providers 数组中添加service 解决了我的错误。

【讨论】:

以上是关于Angular 2.0.0 - 测试“由模块'DynamicTestModule'导入”的主要内容,如果未能解决你的问题,请参考以下文章

如何对依赖于 RC3 路由器的组件进行单元测试?

Angular 2 - 如何使用新的 Angular 2.0.0-rc.1 路由器

Angular 2.0.0 Metadata_resolver 奇怪的行为

Angular 2(2.0.0 到 2.2.0~)在使用“import 'reflect-metadata'”行添加自定义装饰器时出错

与 Angular (4.0.0) 和 Material 2.0.0-beta.8 的数据绑定

Angular2路由器2.0.0在加载不同参数的相同url时不重新加载组件?