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

Javascript 如果提供相等的类,angular2测试中的useClass字段是否有任何区别?,javascript,angular,jasmine,karma-runner,angular-services,Javascript,Angular,Jasmine,Karma Runner,Angular Services,我正在编写一个angular2单元测试(Jasmine),我知道我应该模拟服务而不是提供真正的服务,所以我做了以下工作: { provide: TranslateService, useClass: TranslateService } 如果您没有为测试目的创建另一个类(构建一个或自定义类),那么这样做是否正确 这对我来说没有任何意义,如果我要使用TranslateService类,我应该这样做吗?或者我应该以不同的方式做吗?如果您不需要使用模拟服务,那么就不需要创建和注入模拟服务,而只需

我正在编写一个angular2单元测试(Jasmine),我知道我应该模拟服务而不是提供真正的服务,所以我做了以下工作:

  { provide: TranslateService, useClass: TranslateService }
如果您没有为测试目的创建另一个类(构建一个或自定义类),那么这样做是否正确


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

如果您不需要使用模拟服务,那么就不需要创建和注入模拟服务,而只需注入原始服务

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

 TranslateService
而不是

 { provide: TranslateService, useClass: TranslateService }
如果测试中使用的组件、指令、管道或服务依赖于
TranslateService
,则必须以某种方式提供它。
如果没有,您将收到缺少提供程序的错误消息

如果您不提供服务且未收到异常,则该服务不被使用或是可选的(
constructor(@optional this.translateService:translateService){}
)。

在这种情况下,根据测试期间执行的代码是否尝试访问服务,可能会出现异常,也可能不会出现异常

但是如果我想使用一个模拟服务,那么我想我应该创建一个新的TranslateMockService,只是为了测试目的?是的,然后你需要为提供者使用长格式
{provide:TranslateService,useClass:TranslateMockService}
,然后其他人会加入;-)