Как проверить, был ли вызван сервисный метод из подписчика () - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть реактивная форма, и во время отправки я отправляю http-запрос в API и, основываясь на его результатах (успех / неудача), я звоню в службу оповещений для отображения оповещения:

public submit(formValues): void {
    this.generationProjectService
        .add(
            new CreateGenerationProjectRequest(
                formValues.selectedIndustry,
                formValues.selectedEdition,
                formValues.selectedDate,
                formValues.selectedTemplate,
                formValues.selectedImportant
            )
        )
        .subscribe(
            newGenerationProject => {
                this.domainEventService.onNewGenerationProject.emit(newGenerationProject);

                this.alertService.success('Project was successfully added to Overnight Generation');
            },
            () => {
                this.alertService.error('Something went wrong');
            }
        );
    this.close();
}

Это прекрасно работает, и я хотел бы проверить это, однако я изо всех сил пытаюсь понять.

fit('should notify failed project addition', () => {
    spyOn(generationProjectService, 'add').and.throwError('up');
    const errorSpy = spyOn(alertService, 'error').and.callThrough();

    component.submit({});

    fixture.detectChanges();

    fixture.whenStable().then(() => {
        expect(errorSpy).toHaveBeenCalledTimes(1);
    });
});

Но это не работает.

Что мне нужно изменить в моем тестовом примере, чтобы это работало. Или, возможно, я могу внести изменения в свой код, чтобы сделать его более тестируемым?

1 Ответ

0 голосов
/ 16 ноября 2018

Я думаю, это потому, что вы шпион выдает ошибку Javascript вместо Наблюдаемой выдает ошибку, попробуйте так:

import { throwError } from 'rxjs';

spyOn(generationProjectService, 'add').and.returnValue(throwError('This is an error!'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...