如果提供相同的类,angular2测试中的useClass字段是否有任何区别?

时间:2017-11-12 16:37:27

标签: javascript angular jasmine karma-runner angular-services

我正在写一个 angular2 单元测试(Jasmine),我知道我应该模拟服务而不是提供真实服务,所以我会做以下事情:

  { provide: TranslateService, useClass: TranslateService }

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

对我来说没有任何意义,如果我要使用TranslateService类,或者我应该以不同的方式进行此操作,我是否应该这样做?

1 个答案:

答案 0 :(得分:1)

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

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

 TranslateService

而不是

 { provide: TranslateService, useClass: TranslateService }

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

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