我正在测试角度的拦截器。将 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的方式,因此在我的代码中检查它是完全没用的。