我对使用服务作为依赖项对组件进行单元测试有疑问,并且该服务器依赖于Http
。我正在阅读此文档:使用异步服务测试组件
我有和下面的例子一样的代码:
ngOnInit(): void {
this.twainService.getQuote().then(quote => this.quote = quote);
}
这里的方式是我的代码:代码
文档说,当我测试依赖于另一个服务的组件时,我必须:
将服务注入组件: twainService = fixture.debugElement.injector.get(TwainService);
设置间谍: 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
服务的单元测试组件/服务的正确方法是什么?有什么想法吗?
只需HttpModule
在测试模块的导入中添加即可。
它必须存在,以便可以将Http注入您的servie中,但是由于您在监视服务方法,因此不会在测试中使用Http。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句