无法读取未定义的业力的属性“ nativeElement”

时间:2020-09-21 23:04:23

标签: angular karma-jasmine

我的组件中有一个@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>

,但仍然出现此错误。 非常感谢您的帮助!

0 个答案:

没有答案