程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果 HTTPClientTestingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 HTTPClientTestingModule 测试 HTTP 请求?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果 httpClientTesTingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 httpClientTesTingModule 测试 http 请求??

开发过程中遇到如果 httpClientTesTingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 httpClientTesTingModule 测试 http 请求?的问题如何解决?下面主要结合日常开发的经验,给出你关于如果 httpClientTesTingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 httpClientTesTingModule 测试 http 请求?的解决方法建议,希望对你解决如果 httpClientTesTingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 httpClientTesTingModule 测试 http 请求?有所启发或帮助;

Angular 文档中有一节解释了如何测试 http 请求;使用 httpClIEntTesTingModulehttpTesTingControllerhttps://angular.io/guide/http#tesTing-http-requests

在该部分,他们向您展示了如何编写一个测试,向此处的“模拟后端”发出 http 请求:https://angular.io/guide/http#expecTing-and-answering-requests

这是他们示例中使用的代码:

it('can test httpClIEnt.get',() => {
  const testData: Data = {name: 'Test Data'};

  // Make an http GET request
  httpClIEnt.get<Data>(testurl)
    .subscribe(data =>
      // When observable resolves,result should match test data
      expect(data).toEqual(testData)
    );

  // The following `expectOne()` will match the request's URl.
  // If no requests or multiple requests matched that URL
  // `expectOne()` would throw.
  const req = httpTesTingController.expectOne('/data');

  // Assert that the request is a GET.
  expect(req.request.method).toEqual('GET');

  // Respond with mock data,causing Observable to resolve.
  // Subscribe callBACk asserts that correct data was returned.
  req.flush(testData);

  // Finally,assert that there are no outstanding requests.
  httpTesTingController.verify();
});

所以我的问题是,这种测试的意义何在? AFAIK,它不会增加代码覆盖率,因为它不会针对服务运行,也不会调用真正的后端。

解决方法

是的,他们的榜样希望一切顺利。

我们需要 httpClientTesTingModule 时需要:

  • 测试对响应执行的复杂管道
  • 测试拦截器

第一点可以用一个假的 Subject 对象来完成,而第二点只能用 httpClientTesTingModule 来测试。

您可以在 ng-mocks 的文档中找到更多真实示例:

大佬总结

以上是大佬教程为你收集整理的如果 HTTPClientTestingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 HTTPClientTestingModule 测试 HTTP 请求?全部内容,希望文章能够帮你解决如果 HTTPClientTestingModule 没有发出真正的 API 请求或增加代码覆盖率,为什么我们要使用 HTTPClientTestingModule 测试 HTTP 请求?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。