【发布时间】:2020-07-08 10:35:49
【问题描述】:
我的目标是测试一个 http 响应拦截器。因此,我使用HttpClient 发出虚假请求,使用HttpTestingController 提供虚假错误响应。
我已经关注了这个 Angular tutorial。不幸的是,我收到了错误:
预期有一个对条件“匹配 URL...”的匹配请求
这很奇怪,因为我使用相同的testUrl 来表示期望和调用。
这是我的代码(现在,我只想验证请求是否真的“到达”了测试控制器):
let httpClient: HttpClient;
let httpMock: HttpTestingController;
const testUrl = "/abc";
beforeEach(() => {
TestBed.configureTestingModule(
{
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: HttpUnauthorizedInterceptor,
multi: true
}
],
imports: [HttpClientTestingModule]
});
httpClient = TestBed.inject(HttpClient);
httpMock = TestBed.inject(HttpTestingController);
});
it('should navigate to login page on 401 response code', () => {
httpClient.get<any>(testUrl).subscribe(
() => { },
() => { }
);
const httpRequest = httpMock.expectOne(testUrl);
expect(httpRequest.request.method).toEqual('GET');
httpRequest.flush('', { status: 401, statusText: 'Unauthorized' });
});
也许你会知道如何解决这个问题...
【问题讨论】:
标签: angular http testing karma-runner interceptor