AngularJS Jasmine测试失败:无法实例化模块

时间:2014-02-10 14:56:54

标签: javascript angularjs jasmine angular-ui-bootstrap karma-jasmine

我的角度应用程序工作得很好,我的测试也是如此,使用了karma和jasmine,直到我在ui.bootstrap中添加了一个依赖项。现在应用程序仍然按预期工作,但我无法运行我的测试。这就是我所拥有的:

app.js - 在 ui.bootstrap中添加依赖

angular.module('myApp', ['ngResource', 'ngRoute', 'ui.bootstrap']).config(function(...) {...});

service.js

angular.module('myApp').service('myService', function () {})

controller.js

angular.module('myApp').controller('MyController', function ($scope, $http, myService) {})

测试/ main.js

describe('Controller: MyController', function () {
    var MyController, scope;
    // load the controller's module
    beforeEach(function(){
        module('myApp');
        inject(function ($controller, $rootScope) {
            scope = $rootScope.$new();
            MyController = $controller('MyController', {
                $scope:scope
            });
        });
    });
    it('should do something', function () {
        expect(scope.myOptions.length).toBe(5);
    });
}); 

我的测试,我使用grunt和krama运行,由于以下原因而失败:

Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module ui.bootstrap due to:
Error: [$injector:nomod] Module 'ui.bootstrap' is not available! You either misspelled the module name or forgot

我错过了什么?该应用程序运行没有问题,只有测试失败。

3 个答案:

答案 0 :(得分:35)

karma.conf.js中,有一个karma在测试执行之前加载的文件列表:

// list of files / patterns to load in the browser
files: [
  'bower_components/angular/angular.js',
  'bower_components/angular-mocks/angular-mocks.js',
  ...
]

在那里添加bootstrap-ui.js。

答案 1 :(得分:2)

注入您的依赖项

beforeEach(function(){
   angular.module('ui.bootstrap',[]);
});

答案 2 :(得分:1)

我遇到了同样的问题。刚解决了。以某种方式将module(myApp);函数调用放在您提供给beforeEach()的函数中不起作用只是试试这个:

将模块调用解压缩到它自己的beforeEach():

beforeEach(module('myApp'));

对你使用的函数使用另一个beforeEach()。