在角度测试中被调用但不显示的功能

时间:2019-01-25 23:49:54

标签: angular unit-testing jasmine

我有这个代码。

export class MyComponent implements OnInit {

   ngOnInit() {
      // some code 
      this.method1(); // It comes up to here.
   }

   method1() {
       console.log('method1'); // It is not showing this.
       // Other method calls
   }
}

我的规格文件是:

  it('should call method1', fakeAsync(() => {
    const element = fixture.debugElement.nativeElement;
    spyOn(comp, 'method1');


    fixture.detectChanges();
    // some code 
    fixture.detectChanges();


    fixture.whenStable().then(async() => {
       expect(comp.method1).toHaveBeenCalled();  // this works
    });
  }));

这有什么问题吗?

1 个答案:

答案 0 :(得分:2)

当您侦察一种方法时,您要用伪造的方法替换原始方法,这就是为什么不调用method1的原因

如果您想监视某个方法而不替换它,则必须使用callThrough:

spyOn(comp, 'method').and.callThrough()