在发出事件时:预期是间谍,但得到了功能
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,这让它变得更好!!
我运行这个测试但是我得到这个错误:
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,这让它变得更好!!