如何在angularjs单元测试中注入引用

时间:2015-03-25 11:57:21

标签: angularjs unit-testing

我在单元测试中看到了两种不同的注入方式。

下划线

beforeEach( inject( function(_myService_){
  myService = _myService_;
}));

$ injector injection

beforeEach(inject(function($injector) {
  myService = $injector.get('myService');
}));

有什么区别?哪一个是最好的做法?

1 个答案:

答案 0 :(得分:1)

两者都有效。您也可以在控制器或服务中使用相同的选项,但通常使用与“下划线换行”更相似的模式,但特殊情况除外。

“下划线包装”更清晰,因为您只需要注入一个服务myService而不是两个服务$injectormyService。此外,“$ 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