当前位置: 首页 > 知识库问答 >
问题:

Angular:如果我正在编写单元测试,我应该注入HTTP服务还是继承它?

穆正青
2023-03-14

我见过的大多数Angular教程都将HTTP服务注入到其他更专业的服务中。我计划创建一个专门的服务,并从HTTP服务继承。

然而,我担心可测试性,因为我认为,如果我注入它,我的专业服务将更容易测试。

我的问题是——从一般的角度来看,为了可测试性的目的,继承HTTP服务是明智的吗?

共有1个答案

长孙德惠
2023-03-14

我建议坚持注射。Angularhttpclient现在(4.3及以上版本)有一个专用的测试模块:https://angular.io/api/common/http/testing/HttpClientTestingModule

这允许您将其注入测试套件中,并使用它来监视请求,然后根据需要模拟响应。

这里有一个很好的使用方法:https://alligator.io/angular/testing-httpclient/

 类似资料:
  • 问题内容: 在我的项目中,我使用angularjs框架,并且每当进行ajax调用时都喜欢使用该服务。但是在项目的某些部分中,UI不是通过ajax调用直接更新的,并且不需要angularjs绑定,我应该使用service还是plain ? 更具体地说,是否应该在我不关心UI的项目中最小化angularjs依赖性,还是用angular服务和指令将整个项目紧密包装? 问题答案: 如果您使用的是Angul

  • 问题内容: 我已经看到了两种方式,两种实现工作都只是结构略有不同。根据您的经验,哪个效果更好,为什么? 问题答案: 我实际上会用多个选项来回答这个问题,其中一些实际上是在体内渲染的。 将库脚本(例如jQuery库)放在头部。 将普通脚本放在头部,除非它成为性能/页面加载问题。 与包含相关联的放置脚本,该包含之内以及结尾处。一个示例是asp.net页面中的.ascx用户控件-将脚本放在该标记的末尾。

  • 问题内容: 我想对测试方法学发表一些意见。 假设我们拥有A类和B类。B类使用A类的功能。B类已经过全面测试,因此某些测试覆盖范围也间接应用于A类。 我应该直接为A类编写完整的测试吗?还是只应该测试未经测试的A类功能? 我之所以问是因为,将来可能会以不使用A类相同功能的方式删除或修改B类,因此可能会使某些方法未经测试。你会怎么做? 问题答案: 类别!=单位 如果您练习一个好的TDD,您将很容易理解其

  • 问题内容: 我正在测试服务A,但是服务A取决于服务B(即服务B已注入服务A)。 我已经看到了这个问题,但是我的情况有所不同,因为我认为_模拟_ 服务B而不是注入服务B的实际实例更有意义。我将用茉莉间谍对其进行模拟。 这是一个示例测试: 我得到的错误是: 错误:未知提供程序:serviceBProvider 我该怎么做? 问题答案: 实际上,在AngularJS中,依赖注入使用“最后获胜”规则。因此

  • 我今天有一个讨论,我的一些同事说他们像这样注入他们的 Angular 服务: 他们说他们这样做是因为它阻止了我的组件的消费者更改注入的服务,有点像: 因此,虽然从技术上讲他们是对的,但我仍然不相信我应该这样做。我问自己以下问题: > DI是Angular的基础部分,如果有人真的这么做了,这个人是应该更好地跑进这个坑里失败还是应该他/她根本做不到这一点 在这种情况下, 对于出于几个原因开始学习 An

  • 我应该在中具体放入什么? 我找不到这方面的指导。