我在单元测试中看到了两种不同的注入方式。
下划线
beforeEach( inject( function(_myService_){
myService = _myService_;
}));
或
$ injector injection
beforeEach(inject(function($injector) {
myService = $injector.get('myService');
}));
有什么区别?哪一个是最好的做法?
答案 0 :(得分:1)
两者都有效。您也可以在控制器或服务中使用相同的选项,但通常使用与“下划线换行”更相似的模式,但特殊情况除外。
“下划线包装”更清晰,因为您只需要注入一个服务myService
而不是两个服务$injector
和myService
。此外,“$ injector注入”取决于“Underscore Wrapping”技术,无论如何都能获得$injector
服务。最后,来自Jasmine和Angular的示例使用“Underscore Wrapper”示例。
如果您将服务名称作为某个字符串的字符串,第二个为您提供了灵活性,那么您需要使用“$ injector injection”来注入服务。
最后,我使用这个辅助库,它实际上使用了“$ injector injection”方法,原因如上所述。我发现它非常干净。 https://github.com/brianmcd/angular-test-helpers/blob/master/src/angular-test-helpers.js