У меня есть служба электронной почты, в которой есть метод sendEmail
, похожий на следующий код:
sendEmail(data: FormData) {
return this.http
.post(`${SEND_EMAIL_URI}`, data, {
reportProgress: true,
observe: 'events',
})
.pipe(
tap((event) => {
switch (event.type) {
case HttpEventType.UploadProgress:
...
break;
case HttpEventType.Response:
...
break;
}
}),
catchError((error) => {
...
return EMPTY;
})
);
}
В настоящее время все работает, как я ожидаю, однако я хочу написать тест дляслучай, когда сообщение data
неверно.У меня есть тест на успешность POST, который выглядит следующим образом:
service.sendEmail(formData).subscribe(() => {
httpTestingController.expectOne({
method: 'POST',
url: SEND_EMAIL_URI,
});
});
Я хотел бы добавить тест для подтверждения значения кода состояния ответа, а также сообщения.У меня проблема в том, что, когда я пытаюсь написать что-то вроде следующего:
service.sendEmail(formData).subscribe((response) => {
...
});
response
является неполным.Кажется, застрял на шаге 0
, что эквивалентно sent
.Похоже, я должен сказать тесту, что он должен продолжать слушать остальную часть ответа, например, прогресс.Как мне это сделать?Мне не повезло найти хорошие документы по этому вопросу.