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

如何在AngularJS中自动加载模块,而不将其指定为依赖项,angularjs,angular-mock,Angularjs,Angular Mock,如果在index.html中包含angular-mocks.js,ngMock会有一些魔力自动包含它自己 强制angular在测试模式下加载模块的最简单方法是,只需包含一个文件,而不必编辑任何模块依赖项。加载模块的唯一方法是调用angular.module(…)通过调用以下命令加载“自身”: angular.module('ngMock', ['ng']).provider(...).config(...); 加载模块时,不需要将模块声明为依赖项。您可以只包含angular.module(“”

如果在index.html中包含angular-mocks.js,ngMock会有一些魔力自动包含它自己


强制angular在测试模式下加载模块的最简单方法是,只需包含一个文件,而不必编辑任何模块依赖项。

加载模块的唯一方法是调用
angular.module(…)
通过调用以下命令加载“自身”:

angular.module('ngMock', ['ng']).provider(...).config(...);
加载模块时,不需要将模块声明为依赖项。您可以只包含
angular.module(“”,[…])在其脚本中


如果您的意思是“如何将
ngMock
自动添加到使用
window.module
angular.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');
    ...
window.inject=angular.mock.inject=function(){
...
返回isSpecRunning()?workFn():workFn;
...
函数workFn(){
var modules=currentSpec.$modules | |[];

modules.unshift('ngMock');//您不能这样做。无法自动加载模块,因为您必须指定依赖项树。Angular-mocks仅依赖于
ng
module。恐怕不是这样,Angular-mocks.js通过将ngMock和ng模块取消移动到模块数组中来实现这一点。它们的实现看起来不是很干净但对我来说(这个过程有很多支持代码),我想知道是否有更好的方法。你说的“自动包含自身”是什么意思?使用
angular.module('ngMock',['ng']))这是我感兴趣的第二个部分-我想知道是否有一种优雅的方法可以做到这一点?你到底想实现什么?为什么你想让你的测试变得容易操作和容易出错,而只是为了节省一些按键?