我正在使用Angular CLI 1.0.0-beta.32.2,正在为Angular 2服务编写单元测试,该服务动态创建一个组件并将其插入到另一个组件中。

在我的单元测试中,我尝试创建一个模拟组件来测试我的服务,但是ng test的输出抛出一个错误,指出在entryComponents属性中指定了我的模拟组件。当我尝试将组件添加到TestModuleMetadata对象的entryComponents属性中时,如下所示:TestBed.createTestingModule({...entryComponents: [ TestDialogComponent ]...})我看到以下错误,指出entryComponents属性不存在。
Chrome 56.0.2924 (Windows 10 0.0.0) DialogService should create a child component when opening FAILEDError: No component factory found for TestDialogComponent. Did you add it to @NgModule.entryComponents?
查看TestModuleMetadata定义,将显示entryComponents属性不存在。那么,如何在Angular 2和Jasmine的单元测试中动态创建组件?

最佳答案

据我所知,它还不支持。解决方法是,您可以使用entryComponent创建假模块并将其导入到测试模块中

@NgModule({
  imports: [CommonModule],
  declarations: [TestDialogComponent],
  entryComponents: [TestDialogComponent]
})
export class FakeTestDialogModule {}

进而
TestBed.configureTestingModule({
    imports: [FakeTestDialogModule]

关于unit-testing - Angular 2 TestModuleMetadata没有EntryComponents属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42398059/

10-12 03:37