如何测试依赖于另一个服务(又依赖于Http服务)的服务/组件?

沙里科夫·弗拉迪斯拉夫

我对使用服务作为依赖项对组件进行单元测试有疑问,并且该服务器依赖于Http我正在阅读此文档:使用异步服务测试组件

我有和下面的例子一样的代码:

  ngOnInit(): void {
    this.twainService.getQuote().then(quote => this.quote = quote);
  }

这里的方式是我的代码:代码

文档说,当我测试依赖于另一个服务的组件时,我必须:

  1. 将此服务设置为模块提供者
  2. 将服务注入组件: twainService = fixture.debugElement.injector.get(TwainService);

  3. 设置间谍: spy = spyOn(twainService, 'getQuote').and.returnValue(Promise.resolve(testQuote));

我也一样:这是我的规格文件:spec file我在第21行提供服务,在29中获得注入服务,在32中设置间谍。

所以问题来了:如果我像文档所说的那样做所有事情,我都会报错:Error: No provider for Http!显然出现此错误是因为我GoodsDataService依赖于Http服务。我应该如何处理?我这样做:我创建了简单的javascript对象,并GoodsDataService用它模拟了我的真实对象我还在getGoods此对象中添加了方法存根。所有这些使我能够在不注入真实成分的情况下测试主要组件GoodsDataService但是我完全不确定这个解决方案。我认为这很脏而且不正确。依赖于另一服务而又依赖于Http服务的单元测试组件/服务的正确方法是什么有什么想法吗?

JB Nizet

只需HttpModule在测试模块的导入中添加即可

它必须存在,以便可以将Http注入您的servie中,但是由于您在监视服务方法,因此不会在测试中使用Http。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

单元测试Angular服务,该服务依赖于另一个使用InjectionToken的服务

使用依赖于另一个服务中的服务的管道

测试依赖于2个服务的组件

如何测试依赖于包含 BehaviorSubject 的服务的 Angular 组件?

在 Prism.Unity 中注册一个依赖于另一个服务的服务实例

如果 Kubernetes 端点依赖于另一个服务端点,如何创建它

React Native 测试组件依赖于另一个组件

在项目“应用”中,已解析的Google Play服务库依赖项依赖于另一个版本

错误:在项目“应用”中,已解决的Google Play服务库依赖项依赖于另一个

将自定义 IFileProvider 添加到依赖于另一个 DI 服务的 RazorViewEngineOptions

redux-saga-1异步的服务器端渲染依赖于另一个

如何对一个依赖于其注册回调的Angular服务进行单元测试?

PHPUnit测试一个依赖于另一个方法的方法

测试一个对象是否依赖于另一个对象

错误:在“应用”项目中,已解析的Google Play服务库依赖项依赖于另一个版本

...“ app”中的android项目已解决的Google Play服务库依赖项依赖于另一个版本

微服务,如果一项服务上的数据依赖于另一项服务,如何使服务脱钩?

如何使sysv服务依赖于systemd服务?

如何使一个Maven模块依赖于另一个?

在cmake中,如何使一个目标依赖于另一个目标?

如何编写一个依赖于其他服务并且只有组件注入父对象的Angular 2服务?

SBT-如何使InputTask依赖于一个任务而最终依赖于另一个任务

如何向后移植依赖于仅存在于测试中的另一个包的包?

Python:如何从依赖于模块的另一个文件中正确导入函数

如何编写依赖于另一个定义文件的打字稿定义文件

如何使用 Kotlin/native 生成依赖于另一个的 .framework?

如何使参数的默认值依赖于另一个参数(在Python中)?

如何使用Android Webview运行依赖于另一个库/模块的javascript

如何使Django日期时间字段依赖于另一个字段?