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

标签 javascript angular jasmine karma-runner angular-services

我正在编写一个 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/

相关文章:

javascript - 比较两个对象以创建一个新对象

javascript - 浏览器找不到导入的 javascript 包,生成错误 404

javascript - three.js - 使用 CanvasRenderer 提高性能 (FPS)

angular - 找不到模块 'C:\Users\username\project\node_modules\@angular\cli\bin\ng'

css - Angular 2 : How to correctly automatically import normalize. CSS

javascript - 显示和隐藏仅显示第一个下拉菜单

Angular 2 全局常量提供程序注入(inject)器方法

javascript - Jasmine中 "it()"代表什么?

javascript - 错误 TS2304 : Cannot find name 'createNewEvent'

javascript - 将 angular js 服务/工厂注入(inject) Jasmine