正如标题所示,我想问是否有人知道如何让这个单元测试通过的解决方案,在将支持服务添加到 test123 组件后,无论我做什么它都不会再显示 true。 代码和错误消息的图像示例
问问题
1054 次
2 回答
1
将来,请将代码发布为代码,而不是图像。
如您所述,代码存在许多问题。这里有几个:
- 您向我们展示了服务功能
secondsToTimeFormat()
,但在您调用的组件中this.supportService.secondsToTime()
。 - 在组件中,您使用看起来像对象的东西调用相同的函数,而没有花括号。
- 您没有在 .spec 文件的 TestBed 的 providers 数组中提供 SupportService。
- 由于 SupportService 没有被模拟,它会尝试调用真正的服务,这导致了你看到的错误
no provider for Router!
。为了隔离这个组件,你应该用一个间谍来模拟服务调用。
为了向您展示所有这些实际工作,我将这个Stackblitz放在一起。
有关如何执行所有这些操作的详细信息,请参阅文档。
于 2018-12-17T23:33:55.420 回答
0
您需要提供要注入组件的服务的存根。
providers: [
{
provide: SupportService,
useValue: supportServiceStub
}
]
您在服务中定义 supportServiceStub 模拟函数的位置,请在此处阅读更多信息https://angular.io/guide/testing#component-class-testing
于 2018-12-17T22:42:34.843 回答