我正在浏览我的团队成员编写的测试用例。我观察到的是在他们使用过的一些地方 TestBed.inject(serviceName) 用于注入(inject)服务,并在某些地方使用了 fixture.debugElement.injector.get(serviceName) .有人能告诉我这两者的区别吗?另外注入(inject)服务的正确方法是什么?
例如:
让 abc: ABCService
技术1:abc = TestBed.inject(ABCService)
技术2:abc = fixture.debugElement.injector.get(ABCSerice)
提前致谢
最佳答案
我认为它们本质上是一回事。我只用 Technique 1
.
在旧版本的 Angular 中,它是 TestBed.get
但现在是 TestBed.inject
.
我想TestBed.inject
从根注入(inject)器获取服务,同时 fixture.debugElement.injector.get
获取实际注入(inject)组件的服务。
您可以阅读更多相关信息 here .
您可以在 Component
中提供服务Component
的装饰者并且此服务的每个实例都是唯一的(一个单独的实例),我敢打赌 fixture.debugElement.inject.get
将获得装饰器中提供的这个唯一实例,而不是全局单例。查看装饰器中的提供者 here .
关于angular - Angular 单元测试中 Testbed.inject(serviceName) 和 fixture.debugElement.injector.get(serviceName) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67718077/