【问题标题】:AngularJS Unit Test: Module 'admin.module' is not availableAngularJS 单元测试:模块“admin.module”不可用
【发布时间】:2016-11-10 12:06:23
【问题描述】:

我正在使用 Karma 和 Jasmine 测试一个 Angular 控制器,但我似乎无法从我的主类加载我的模块。

这是我的主要课程:admin.controller.js

angular.module('admin.module').controller('admin.controller', ['$scope', function ($scope) {
$scope.SaveChanges = function()
{
    return true;
}
}]);

这是我的测试类:admin.controller.tests.js

describe('admin.controller tests', function () {

    beforeEach(module('admin.module'));
    var $controller = {};

    beforeEach(inject(function (_$controller_) {
        $controller = _$controller_;
    }));

    describe('$scope.SaveChanges', function () {
        it('Should return true', function () {
            var $scope = {};
            var controller = $controller('admin.controller', { $scope: $scope });
            expect($scope.SaveChanges()).toBe(true);
        });
    });
});

我的karma.conf.js 文件指向我项目中的以下文件:

// list of files / patterns to load in the browser
files: [
  '../TriAngular/scripts/angular.js',
  '../TriAngular/scripts/angular-mocks.js',
  '../TriAngular/app/admin/*.js',
  'app/admin/*.js'
],

admin.controller.js 文件在 ../TriAngular/app/admin 内,而我的 admin.controller.test.js 在 'app/admin' 内。

我尝试直接引用我的 karma 配置文件中的文件,但没有成功。完整的错误是:

模块“admin.module”不可用!你要么拼错了 模块名称或忘记加载它。如果注册一个模块,请确保 您将依赖项指定为第二个参数。

【问题讨论】:

    标签: javascript angularjs unit-testing visual-studio-2015 karma-jasmine


    【解决方案1】:

    这个问题显然不是来自显示的异常。我缺少一个需要包含的angular-route.js 文件,因为它看起来像我的管理模块依赖于它。

    我的karma.conf.js 文件中包含的列表:

    // list of files / patterns to load in the browser
    files: [
      '../TriAngular/scripts/angular.js',
      '../TriAngular/scripts/angular-mocks.js',
      '../TriAngular/scripts/angular-route.js',
      '../TriAngular/app/admin/*.js',
      'app/admin/*.js'
    ],
    

    【讨论】:

      【解决方案2】:

      试试;

      beforeEach(function(){
      module('admin.module');
          }
      });
      

      我对 Karma 不熟悉,但你也需要注册你的模块,我只使用过带有 resharper 的 Jasmine,所以我注册文件的方法是;

      /// <reference path="../scripts/app.js" />
      

      在文件的顶部。

      同时不要忘记引用你的模块的依赖项。

      【讨论】:

      • 感谢您的回答,但仍然出现相同的错误
      猜你喜欢
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      相关资源
      最近更新 更多