【问题标题】:Angular HttpTestingController doesn't find matchesAngular HttpTestingController 找不到匹配项
【发布时间】: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


    【解决方案1】:

    我错误地认为测试代码有问题。但它确实按预期工作。

    是经过测试的拦截器,有默认实现,连续抛出错误。这就是为什么请求从未到达HttpTestingController

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

    【讨论】:

    • 您好,您能否显示“问题”错误以帮助其他人?
    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2021-05-07
    • 2020-08-17
    相关资源
    最近更新 更多