У меня есть реактивная форма, и во время отправки я отправляю 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);
});
});
Но это не работает.
Что мне нужно изменить в моем тестовом примере, чтобы это работало. Или, возможно, я могу внести изменения в свой код, чтобы сделать его более тестируемым?