我正在编写一个angular2单元测试(Jasmine),我知道我应该模拟服务而不是提供真实的服务,因此我要执行以下操作:

  { provide: TranslateService, useClass: TranslateService }


如果您没有为测试目的而创建另一个类(构建一个或定制一个),这是否是正确的方法?

这对我来说没有任何意义,如果我将要使用TranslateService类,应该以这种方式执行此操作,还是应该以其他方式执行此操作?

最佳答案

如果不需要使用模拟服务,则无需创建和注入模拟服务,而只需注入原始服务。

在这种情况下,您也可以使用较短的形式

 TranslateService


代替

 { provide: TranslateService, useClass: TranslateService }


如果测试中使用的组件,指令,管道或服务取决于TranslateService,则必须以某种方式提供。
如果您没有提供缺少的提供程序,则会收到一条错误消息。

如果您不提供服务且没有异常,则该服务未使用或为可选(constructor(@Optional this.translateService:TranslateService){})。
在这种情况下,您能否获得异常取决于您在测试期间执行的代码是否尝试访问该服务。

10-04 20:35