-1

正如标题所示,我想问是否有人知道如何让这个单元测试通过的解决方案,在将支持服务添加到 test123 组件后,无论我做什么它都不会再显示 true。 代码和错误消息的图像示例

4

2 回答 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 回答