Angular HttpTestingController 未找到匹配项
Angular HttpTestingController doesn't find matches
我的目标是测试一个 HTTP 响应拦截器。因此,我使用 HttpClient
发出虚假请求,并使用 HttpTestingController
提供虚假错误响应。
我关注了这个 Angular tutorial。不幸的是我得到了错误:
Expected one matching request for criteria "Match 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' });
});
也许您会有解决此问题的任何想法...
我错误地假设,测试代码有问题。但它确实像预期的那样工作。
测试拦截器,默认实现,连续报错。这就是请求从未到达 HttpTestingController
.
的原因
我刚刚通过实施拦截器什么也不做来解决了“问题”。
我的目标是测试一个 HTTP 响应拦截器。因此,我使用 HttpClient
发出虚假请求,并使用 HttpTestingController
提供虚假错误响应。
我关注了这个 Angular tutorial。不幸的是我得到了错误:
Expected one matching request for criteria "Match 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' });
});
也许您会有解决此问题的任何想法...
我错误地假设,测试代码有问题。但它确实像预期的那样工作。
测试拦截器,默认实现,连续报错。这就是请求从未到达 HttpTestingController
.
我刚刚通过实施拦截器什么也不做来解决了“问题”。