我正在编写一个 angular2 单元测试 (Jasmine),我知道我应该模拟服务而不是提供真实的服务,所以我执行以下操作:
{ provide: TranslateService, useClass: TranslateService }
如果您没有为测试目的而创建的另一个类(构建的或自定义的),这是正确的做法吗?
这对我来说没有任何意义,如果我要使用 TranslateService 类,我应该这样做还是应该以不同的方式来做?
最佳答案
如果不需要使用模拟服务,则无需创建和注入(inject)模拟服务,只需注入(inject)原始服务即可。
在这种情况下你也可以使用更短的形式
TranslateService
代替
{ provide: TranslateService, useClass: TranslateService }
如果测试中使用的组件、指令、管道或服务依赖于 TranslateService
,则必须以某种方式提供它。
如果您没有这样做,您将收到有关缺少提供者的错误消息。
如果您不提供服务且未收到异常,则该服务未被使用或它是可选的(constructor(@Optional this.translateService:TranslateService){}
).
在这种情况下,您可能会或可能不会收到异常,具体取决于您在测试期间执行的代码是否尝试访问该服务。
关于javascript - 如果提供相等的类,angular2 测试中的 useClass 字段是否有任何区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47251238/