我有问题关于单元测试服务作为依赖的组件和此服务器取决于Http
。 我读这个文档:Test a component with an async service如何测试一个服务/组件依赖于另一个服务,而这又取决于Http服务?
我真的有相同的代码,就像这个例子:
ngOnInit(): void {
this.twainService.getQuote().then(quote => this.quote = quote);
}
这里的方式是我的代码:code
的文档说,当我测试组件这取决于另一项服务,我必须:
- 将此服务设置为模块提供商 注入组件
获得服务:它
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
服务?有什么想法吗?
我觉得这是个好主意。我在想同样的事情。但为什么docs不说呢?这是明显的吗? –
我不会说这是有意义的,因为理解如何一切工作都需要一些时间。但我会说,一旦你明白它如何炒作,这听起来合乎逻辑。我同意,鉴于他们将使用HTTP的服务作为服务引入,他们应该解释如何在测试中提供假的Http服务,或者如何导入HttpModule。你应该打开一个问题。 –