Я тестирую компонент, который генерирует событие от другого компонента. Я пытаюсь проверить, генерирует ли мой дочерний компонент это событие:
У меня есть этот эмиттер в моем компоненте:
@Output() emitter = new EventEmitter<MyEmitter[]>();
Я делаю HTTP-запрос, и когда я получаю ответ, я emit:
getSomething() {
this.myService.get()
.subscribe((res: any[]) => {
this.emitter.emit(res);
}
);
}
И в своем тесте я пробовал:
fit('should emit a value', fakeAsync(async () => {
const spyOnEventEmitter = spyOn(component.emitter, 'emit');
spyOn(myService, 'get').and.returnValue(of(mockService.list));
spyOn(component, 'getSomething');
component.getSomething();
tick();
await fixture.whenStable();
fixture.detectChanges();
expect(spyOnEventEmitter).toHaveBeenCalled();
}));
Почему это происходит?
Также пробовал:
fit('should emit a value', fakeAsync(async () => {
let eventEmitted;
component.emitter.subscribe((event) => {
eventEmitted = event;
});
spyOn(myService, 'get').and.returnValue(of(mockService.list));
spyOn(component, 'getSomething');
component.getSomething();
tick();
await fixture.whenStable();
fixture.detectChanges();
expect(spyOnEventEmitter).toHaveBeenCalled();
}));