【问题标题】:Do I have to inject the service in the unit test if I cal testBed.get() previously?如果我之前调用了 testBed.get(),我是否必须在单元测试中注入服务?
【发布时间】:2018-04-30 07:09:28
【问题描述】:

我在 Angular 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() 并使用它,还是应该两者都做?

【问题讨论】:

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


    【解决方案1】:

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

    如果 spec 函数依赖于 inject 而不是局部变量,则不必在当前 describe 块的范围内定义它,并且可以重用或移至某个辅助函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      相关资源
      最近更新 更多