如果我先前测试testBed.get(),是否必须在单元测试中注入服务?

时间:2017-11-16 16:36:39

标签: javascript angular unit-testing jasmine karma-jasmine

我有一项服务,我正在进行角度2单元测试。

我首先使用TestBed.get()

在beforeEach块中调用该服务

示例

 beforeEach(() => {
    fixture = TestBed.createComponent(ConfigComponent);
    component = fixture.componentInstance;
    service = TestBed.get(ConfigService);
    fixture.detectChanges();
  });

然后我在单元测试中使用此服务,如下所示:

示例

 it('should do something', inject([ConfigService], (configService) => {
      // code here
 }));

我是否需要在单元测试中注入服务如果先前调用过,或者我是否需要调用TestBed.get()并使用它或者我应该同时使用它吗?

1 个答案:

答案 0 :(得分:3)

正如this answer中解释的那样,injectTestBed.get是相似的,所以这是一种风格问题。所有规范通用的某些服务可以分配给变量,而特定规格的服务只能在这些规范中注入。

当spec函数依赖于inject而不是局部变量时,它不必在当前describe块的范围内定义,并且可以重用或移动到一些辅助功能。

应该注意的是,注入器实例是在第一次inject函数或TestBed.get调用时创建的,它们的使用方式可能会改变结果。