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.

的原因

我刚刚通过实施拦截器什么也不做来解决了“问题”。