如何在Angular中使用reportProgress标志测试http发布请求?

时间:2019-09-23 18:22:21

标签: angular http jestjs

我有一个具有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上。看来我不得不告诉测试它需要继续侦听其余的响应,例如进展。我该怎么做呢?我还没有运气就此找到好的文档。

0 个答案:

没有答案