如何在Angular中将HttpErrorResponse对象添加到GET模拟调用中?

时间:2018-03-19 20:16:14

标签: javascript angular http jasmine karma-jasmine

我正在测试角度的拦截器。将 HttpErrorResponse 对象error.errorType参数添加到我的模拟请求中,一切正常。

以下是代码:

it('should call showError method', () => {

    httpClient.get('url').subscribe(
      result => {},
      (err) => {
        expect(timeoutService.showError).toHaveBeenCalled();
      }
    );

    const request = httpMock.expectOne('url');
    request.error(new ErrorEvent('TIMEOUT'), {
      status: 500,
      statusText: 'Internal Server Error'
    });

  });

我需要在测试中添加以下内容

 const httpErrorResponse = new HttpErrorResponse({});
    httpErrorResponse.error.errorType = 'TIMEOUT';

因为我在我的拦截器中的if语句中有它,如果我在我的语句中删除了错误类型检查 - 当然的传递。

如何将额外的参数/对象添加到我的模拟请求中?

文档说我应该有权访问HttpErrorResponse对象,但我无法访问它。 https://angular.io/api/common/http/testing/TestRequest#description

修改

再看一下,我看到该属性是只读的...因此上面的httpErrorResponse并将参数添加到它是错误的。

我认为这不可能以任何方式完成。因为errorType:' TIMEOUT'将永远是错误500的方式,因此在我的代码中检查它是完全没用的。

0 个答案:

没有答案