【发布时间】:2017-10-31 13:04:51
【问题描述】:
我对使用服务作为依赖项的组件进行单元测试有疑问,该服务器依赖于Http。
我正在阅读此文档:Test a component with an async service
我的代码与此示例中的代码完全相同:
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 服务?有什么想法吗?
【问题讨论】:
标签: angular unit-testing http