Как проверить http-запрос с флагом reportProgress в Angular? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть служба электронной почты, в которой есть метод 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.Похоже, я должен сказать тесту, что он должен продолжать слушать остальную часть ответа, например, прогресс.Как мне это сделать?Мне не повезло найти хорошие документы по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...