如何在AngularJS中自动加载模块而不将其指定为依赖项

时间:2014-01-22 09:09:51

标签: angularjs angular-mock

如果你在index.html中包含angular-mocks.js,那么ngMock可以自动包含它自己。

通过包含文件而不必编辑任何模块依赖项,强制角度在测试模式下加载模块的最简单方法是什么。

1 个答案:

答案 0 :(得分:2)

加载模块的唯一方法是调用angular.module(...) ngMocks 通过调用

加载“本身”
angular.module('ngMock', ['ng']).provider(...).config(...);

您无需将模块声明为加载它的依赖项。您只需在其脚本中加入angular.module('<moduleName>', [<moduleDependencies>...]);即可。


如果您的意思是“如何ngMock自动添加到使用window.moduleangular.mock.module加载的任何模块的依赖关系列表中,那是因为ngMocks创建了自定义注入器,这样它就会获取依赖项列表并预先'ngMock'

window.inject = angular.mock.inject = function() {
  ...
  return isSpecRunning() ? workFn() : workFn;
  ...
  function workFn() {
    var modules = currentSpec.$modules || [];

    modules.unshift('ngMock');   // <-- this line does the trick
    modules.unshift('ng');
    ...

您可以创建自己的函数,在实例化之前将模块添加到依赖项列表中,但我几乎不相信这有助于测试。相反,它将是另一个错误源(并且可能导致可能“隐藏”依赖性错误)。