在发出事件时:预期是间谍,但得到了功能

On emit event: Expected a spy, but got Function

我运行这个测试但是我得到这个错误:

Unhandled Promise rejection: <toHaveBeenCalledWith> : Expected a spy, but got Function.

  it('should change myComponent value', () => {
     spyOn(component.mychange, 'emit');
     const input = fixture.debugElement.query(By.css('#mychange')).nativeElement;
     input.value = "2";
     fixture.whenStable().then(() => {
       expect(component.mychange.emit).toHaveBeenCalledWith(2);
     });
   });

有类似的问题,但它发生在我的 emit 事件上,我尝试了这些问题的解决方案,但它们不起作用。

看到你在这里设置了一个 emit 方法的间谍 - spyOn(component.mychange, 'emit');

问题似乎与触发更改有关 -

所以你需要调用 component.mychange(10);

所以你的代码会变成

it('should change myComponent value', async () => {
     spyOn(component.mychange, 'emit');
     const input = fixture.debugElement.query(By.css('#mychange')).nativeElement;
     input.value = "2";
     component.mychange(2);
     await fixture.whenStable()
     expect(component.mychange.emit).toHaveBeenCalledWith(2);
   });

我也使用了 async await,这让它变得更好!!