tar*_*ava 7 unit-testing karma-jasmine angular
我正在查看我的团队成员编写的测试用例。我观察到,他们在某些地方使用TestBed.inject(serviceName)来注入服务,在某些地方他们使用fixture.debugElement.injector.get(serviceName)。有人可以告诉我这两者之间的区别吗?另外注入服务的正确方法是什么?
例如:
让 abc: ABCService
技术 1:abc = TestBed.inject(ABCService) 技术 2:abc = Fixture.debugElement.injector.get(ABCSerice)
提前致谢
我认为它们本质上是同一件事。我只用Technique 1.
在旧版本的 Angular 中,它是,TestBed.get但现在是TestBed.inject。
我认为TestBed.inject从根注入器获取服务,同时fixture.debugElement.injector.get获取实际注入到组件中的服务。
你可以在这里读更多关于它的内容。
您可以在Componenta 的装饰器中提供一个服务Component,并且该服务的每个实例都是唯一的(一个单独的实例),我打赌fixture.debugElement.inject.get将获得装饰器中提供的唯一实例,而不是全局单例。在这里查看装饰器中的提供者。