我正在写一个 angular2 单元测试(Jasmine),我知道我应该模拟服务而不是提供真实服务,所以我会做以下事情:
{ provide: TranslateService, useClass: TranslateService }
如果您没有为测试目的而创建另一个类(构建一个或自定义类),这是否是正确的方法?
对我来说没有任何意义,如果我要使用TranslateService类,或者我应该以不同的方式进行此操作,我是否应该这样做?
答案 0 :(得分:1)
如果您不需要使用模拟服务,则无需创建和注入模拟服务,而只需注入原始服务。
在这种情况下,您也可以使用较短的格式
TranslateService
而不是
{ provide: TranslateService, useClass: TranslateService }
如果测试中使用的组件,指令,管道或服务取决于TranslateService
,则必须以某种方式提供。
如果不这样做,您将收到缺少的提供程序的错误消息。
如果您未提供服务且未收到例外,则表示该服务未使用或可选(constructor(@Optional this.translateService:TranslateService){}
)。
在这种情况下,您可能会或可能不会获得异常,具体取决于您在测试期间执行的代码是否尝试访问该服务。