使用viewchild和指令

时间:2017-08-06 10:33:21

标签: angular testing

我解决了我的问题... https://embed.plnkr.co/UparfJDomOECGJfWSbqA/ 简短:我无法测试我的组件,它似乎在container.component.spec.ts:43中失败 - 但如果没有fixture.detectChanges(),则ngAfterViewInit将无法启动。我无法看到我做错了什么。

我想使用指令属性将组件动态加载到ng-template中,解决方案确实有效,但我无法为其编写工作测试。 因为我对单元测试很陌生......这是我应该测试的东西 - 我想是的。 (是的,我读了angular.io测试指南,以及其他一些;-)) 错误为TypeError: Cannot read property 'viewContainerRef' of undefined,似乎表明@ViewChild没有ViewChild ...

1 个答案:

答案 0 :(得分:4)

测试模块没有看到MenuDirective,因为您忘记从假模块中导出它:

@NgModule({
    declarations: [
        MenuComponent,
        MenuDirective,
    ],
    exports: [MenuDirective], <== add this
    entryComponents: [MenuComponent]
})
class FakeEntryComponents {}

似乎你想查询MenuComponent

menuElement = fixture.debugElement.query(By.directive(MenuComponent))

<强> Plunker Example

另见