我是Angular 2测试的新手。我想弄清楚使用testsbed.get()
并在测试级别使用inject
有什么不同。
例如:
beforeEach(() => {
TestBed.configureTestingModule({
providers: [SomeService]
});
const testbed = getTestBed();
someService= testbed.get(SomeService);
});
});
VS
it('test service', inject([SomeService], (someService: SomeService) => {
答案 0 :(得分:25)
只需添加到现有答案中,如果像我一样,您就发现了这个问题,因为您想知道TestBed.get()
和TestBed.inject()
之间的区别是什么,我知道这与OP最初要求的不完全相同,但是这是非常相关的。
我认为值得一提的是,根据最新的Angular文档,TestBed.inject()
是TestBed.get()
的类型安全替代。
从here上的TestBed
的Angular文档中获得。
答案 1 :(得分:21)
inject
辅助函数。在Angular 1中,有必要使用ngMock
引导测试。它在Angular 2及更高版本中是完全可选的,并且只是TestBed测试中DI的建议方式。
It a convenience wrapper for testBed.get
允许避免多次testBed.get
次调用,类似于:
const [foo, bar] = [Foo, Bar].map(TestBed.get);
其他辅助函数可以选择与inject
结合使用,即async
和fakeAsync
。
答案 2 :(得分:0)
这些用法是等效的,但在 Angular 9 中更新了首选方法。
TestBed.get()
在 Angular 9+ 中已弃用,TestBed.inject()
现在是注入依赖项的首选类型安全方式。
为清楚起见,请阅读文档:TestBed.get() 和 TestBed.inject()。更改是弃用之一。