代码之家  ›  专栏  ›  技术社区  ›  masterach

如果我调用测试床,我是否必须在单元测试中注入服务。get()之前?

  •  2
  • masterach  · 技术社区  · 7 年前

    我在角度2单元测试中使用了一个服务。

    我首先使用TestBed调用beforeach块中的服务。get()

    实例

     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 回复  |  直到 7 年前
        1
  •  3
  •   Estus Flask    7 年前

    如中所述 this answer , inject TestBed.get 都很相似,所以这是风格的问题。所有规范通用的一些服务可以分配给变量,而特定于特定规范的服务只能注入到这些规范中。

    当规范函数依赖于 而不是局部变量,它不必在电流范围内定义 describe 块,可以重用或移动到某些辅助函数。

    应该注意的是,喷油器实例是在第一个 功能或 试验台。收到 调用时,它们的使用方式可能会改变结果。