23

我的 Angular 应用程序运行良好,我的测试也是如此,使用 karma 和 jasmine,直到我在ui.bootstrap. 现在该应用程序仍按预期工作,但我无法运行我的测试。这就是我所拥有的:

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

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

服务.js

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

控制器.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

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

4

3 回答 3

36

其中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。

于 2014-09-10T12:19:30.373 回答
2

注入你的依赖

beforeEach(function(){
   angular.module('ui.bootstrap',[]);
});
于 2016-09-01T11:22:17.653 回答
1

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

将模块调用提取到它自己的 beforeEach() 中:

beforeEach(module('myApp'));

并为您使用的功能使用另一个 beforeEach()。

于 2017-03-15T07:52:41.403 回答