使用viewchild和指令进行角度组件测试

Vae*_*lor 0 testing angular

我因自己的问题陷入困境... 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的人。

yur*_*zui 5

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

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

似乎您要查询MenuComponent

menuElement = fixture.debugElement.query(By.directive(MenuComponent))
Run Code Online (Sandbox Code Playgroud)

柱塞示例

也可以看看