我有一项服务,我正在进行角度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()并使用它或者我应该同时使用它吗?
答案 0 :(得分:3)
正如this answer中解释的那样,inject
和TestBed.get
是相似的,所以这是一种风格问题。所有规范通用的某些服务可以分配给变量,而特定规格的服务只能在这些规范中注入。
当spec函数依赖于inject
而不是局部变量时,它不必在当前describe
块的范围内定义,并且可以重用或移动到一些辅助功能。
应该注意的是,注入器实例是在第一次inject
函数或TestBed.get
调用时创建的,它们的使用方式可能会改变结果。