我的组件中有一个@ViewChild
。并以ngAfterViewInit
方法使用它
@ViewChild ('waitBtn', {read: ElementRef}) waitBtn: ElementRef;
ngAfterViewInit() {
this.dblclickService.detectDblclick(this.waitBtn.nativeElement)
.subscribe(() => this.pauseTimer());
}
但是当我尝试运行单元测试时,出现错误Cannot read property 'nativeElement' of undefined
。如果我在ngAfterViewInit()
中评论此行,则所有测试均通过。
我试图像这样修复它:
it('ngAfterViewInit', () => {
const mockSpyAfterViewInit = spyOn(component, 'ngAfterViewInit');
fixture.detectChanges();
component.ngAfterViewInit();
const btn = fixture.debugElement.query(By.css('#waitBtn')).nativeElement;
expect(component.waitBtn).toEqual(btn);
expect(mockSpyOnDestroy).toHaveBeenCalled();
});
我的html:
<button class="stopwatch-button" #waitBtn mat-raised-button>Wait</button>
,但仍然出现此错误。 非常感谢您的帮助!