1

如果您在 index.html 中包含 angular-mocks.js,ngMock 会自动包含自身。

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

4

1 回答 1

2

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

angular.module('ngMock', ['ng']).provider(...).config(...);

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


如果您的意思是“如何自动添加到使用orngMock加载的任何模块的依赖项列表中,那是因为创建了一个自定义注入器,以便它获取依赖项列表并预先添加:window.moduleangular.mock.modulengMocks'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');
    ...

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

于 2014-01-22T11:14:04.150 回答