У меня есть следующий компонент с методом, который отображает модальное. Если пользователь подтверждает нажатием «ОК», он возвращает наблюдаемую величину истины, а если он отменяет, возвращает наблюдаемую ложь. Однако мне трудно применить тестовый пример, чтобы проверить, вызывается ли this.onSwitchWindowClick()
с ответом Observable.of(true)
.
public confirmSwitchWindow() {
const modalConfig: ConfirmModalConfig = new ConfirmModalConfig(
'modal title',
'this is the modal message',
[
[this.translateService.instant('actions.confirm'), ConfirmButtonActions.YES],
[this.translateService.instant('actions.cancel'), ConfirmButtonActions.CANCEL],
],
ConfirmIcons.WARN,
);
this.confirmService.showConfirmModal(modalConfig, true).pipe(
mergeMap((action: ConfirmButtonActions) => {
if (action === ConfirmButtonActions.YES) {
return Observable.of(true);
} else {
return Observable.of(false);
}
}),
catchError((err) => {
throw Observable.of(err);
}),
).subscribe((value: boolean) => {
if (value) {
this.onSwitchWindowClick();
}
});
}
Это тест:
it('Should correctly confirm switch from planning window to production', async(() => {
const spyShowConfirmModal = spyOn(confirmService, 'showConfirmModal').and.returnValue(Observable.of(true));
const onSwitchWindowClick = spyOn(component, 'onSwitchWindowClick');
component.confirmSwitchWindow();
component.returnValue = true;
expect(spyShowConfirmModal).toHaveBeenCalled();
spyShowConfirmModal(null, true).subscribe((value) => {
fixture.detectChanges();
expect(onSwitchWindowClick).toHaveBeenCalled();
});
}));
Тест не пройден: "... FAILED: Expected spy onSwitchWindowClick to have been called."
Как это исправить?