我解决了我的问题... 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 ...
答案 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 强>
另见