如何在AngularJS中自动加载模块,而不将其指定为依赖项
如果在index.html中包含angular-mocks.js,ngMock会有一些魔力自动包含它自己如何在AngularJS中自动加载模块,而不将其指定为依赖项,angularjs,angular-mock,Angularjs,Angular Mock,如果在index.html中包含angular-mocks.js,ngMock会有一些魔力自动包含它自己 强制angular在测试模式下加载模块的最简单方法是,只需包含一个文件,而不必编辑任何模块依赖项。加载模块的唯一方法是调用angular.module(…)通过调用以下命令加载“自身”: angular.module('ngMock', ['ng']).provider(...).config(...); 加载模块时,不需要将模块声明为依赖项。您可以只包含angular.module(“”
强制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']))这是我感兴趣的第二个部分-我想知道是否有一种优雅的方法可以做到这一点?你到底想实现什么?为什么你想让你的测试变得容易操作和容易出错,而只是为了节省一些按键?