在angularjs中注入函数

时间:2014-10-03 10:24:44

标签: angularjs jasmine

我用茉莉,业力来测试angularjs控制器......测试样本看起来像这样:

     beforeEach(inject(function(_$rootScope_, _$controller_){
    $rootScope = _$rootScope_;
    $scope = $rootScope.$new();
    $controller = _$controller_;
    $controller('AboutController', {'$rootScope' : $rootScope, '$scope': $scope});
}));

在这里,我很困惑茉莉花是如何了解注射功能的?它是与angular的Injector.inject()相同的函数对象......我很惊讶,该方法在Angular命名空间之外可用...以及注入函数的 $ controller 变量是做什么的? / p>

1 个答案:

答案 0 :(得分:2)

inject函数是Angular Mocks package (ngMock)的一部分。您可能已将此添加到karma.conf.js文件中以便配置jasmine测试。因此,这种注入方式在生产Angular代码中是 not ,它仅用于单元测试。

该包将inject添加到窗口对象(全局),以方便测试。

来自文档:

  

注意:此功能也会在窗口上发布,以便于访问。

了解更多信息here is the documentation

关于第二个问题:$controller服务允许您初始化命名控制器(在您的示例中为'AboutController')并传入它的依赖项。在测试控制器时,通常需要掌握$scope