Ожидаемый шпион был вызван - PullRequest
0 голосов
/ 17 марта 2020

У меня есть следующий компонент с методом, который отображает модальное. Если пользователь подтверждает нажатием «ОК», он возвращает наблюдаемую величину истины, а если он отменяет, возвращает наблюдаемую ложь. Однако мне трудно применить тестовый пример, чтобы проверить, вызывается ли 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."

Как это исправить?

...