Angular - Karma 单元测试不起作用,为什么?
Angular - Karma unit test not working, why?
如题,请问有谁知道如何让这个单元测试通过的解决方法,给test123组件添加support服务后,无论怎样都不显示true了我所做的。
Image sample of the code and error messages
您需要提供要注入组件的服务存根。
providers: [
{
provide: SupportService,
useValue: supportServiceStub
}
]
在服务中定义 supportServiceStub 模拟函数的位置,请在此处阅读更多内容 https://angular.io/guide/testing#component-class-testing
以后,请post编码为代码,而不是图像。
如您所述,代码存在许多问题。这里有一些:
- 您向我们展示了服务功能
secondsToTimeFormat()
,但在您调用的组件中 this.supportService.secondsToTime()
。
- 在组件中,您使用看似对象的对象调用相同的函数,但没有大括号。
- 您没有在 .spec 文件中的 TestBed 提供程序数组中提供 SupportService。
- 由于 SupportService 未被模拟,它会尝试调用真正的服务,这导致了您在
no provider for Router!
中看到的错误。为了隔离此组件,您应该使用间谍模拟服务调用。
为了向您展示这一切的实际效果,我整理了这个 Stackblitz。
有关如何执行所有这些操作的详细信息,请参阅 docs。
如题,请问有谁知道如何让这个单元测试通过的解决方法,给test123组件添加support服务后,无论怎样都不显示true了我所做的。 Image sample of the code and error messages
您需要提供要注入组件的服务存根。
providers: [
{
provide: SupportService,
useValue: supportServiceStub
}
]
在服务中定义 supportServiceStub 模拟函数的位置,请在此处阅读更多内容 https://angular.io/guide/testing#component-class-testing
以后,请post编码为代码,而不是图像。
如您所述,代码存在许多问题。这里有一些:
- 您向我们展示了服务功能
secondsToTimeFormat()
,但在您调用的组件中this.supportService.secondsToTime()
。 - 在组件中,您使用看似对象的对象调用相同的函数,但没有大括号。
- 您没有在 .spec 文件中的 TestBed 提供程序数组中提供 SupportService。
- 由于 SupportService 未被模拟,它会尝试调用真正的服务,这导致了您在
no provider for Router!
中看到的错误。为了隔离此组件,您应该使用间谍模拟服务调用。
为了向您展示这一切的实际效果,我整理了这个 Stackblitz。
有关如何执行所有这些操作的详细信息,请参阅 docs。