简体   繁体   English

我正在尝试使用茉莉花来测试我的角度控制器。 但我收到错误:[$ injector:modulerr]

[英]i am trying to test my angular controller using jasmine. But i am getting Error: [$injector:modulerr]

following is the code from my sample angular project. 以下是我的示例角度项目中的代码。
app.js code: app.js代码:

(function () {
    'use strict';
    var app = angular.module('actorsDetails', [
        // Angular modules
        'ngResource',

        // 3rd Party Modules
        'ui.bootstrap',
        'ui.router'

    ]);

    app.config(['$stateProvider', '$urlRouterProvider', configRoutes]);

    function configRoutes($stateProvider, $urlRouterProvider) {
        $stateProvider
            .state('main', {
                url: '/main',
                templateUrl: 'app/home/home.html',
                controller: 'HomeCtrl',
                controllerAs: 'vm'
            })
            .state('form', {
                url: '/form',
                templateUrl: 'app/form/form.html',
                controller: 'FormCtrl',
                controllerAs: 'vm',
                resolve: {
                    initialData: ['actorApi', function (actorApi) {
                        return actorApi.getActorsResource();

                    }]
                }

            })
            .state('resource', {
                url: '/resource',
                templateUrl: 'app/resource/resource.html',
                controller: 'ResourceCtrl',
                controllerAs: 'vm',
                resolve: {
                    initialData: ['actorApi', function (actorApi) {
                        return actorApi.getActorsResource();

                    }]
                }
            });
        $urlRouterProvider.otherwise('/main');
    }
    app.run(['$state', function ($state) {
        // Include $route to kick start the router.
    }]);
})();

controller code: 控制器代码:

(function () {
    'use strict';
    angular.module('actorsDetails').controller('HomeCtrl', HomeCtrl);
    /* @ngInject */
    function HomeCtrl($state) {
        /* jshint validthis: true */
        var vm = this;
        vm.activate = activate;
        vm.test = true;
        vm.navigate = navigate;
        activate();
        function activate() {
        }
        function navigate() {
            $state.go('form');
        }
    }
})();


**test.js**

describe('HomeCtrl', function() {

    beforeEach(module('actorsDetails'));
    beforeEach(inject(function ($rootScope, $controller) {
        var scope = $rootScope.$new();
        var HomeCtrl = $controller('HomeCtrl', {
            $scope: scope
        });
    }));
    it('should have a HomeCtrl controller', function() {
        expect(true).toBeDefined();
    });

});

there are the files I have included in my karma.config.js I have added all the angularJS dependent files. 我的karma.config.js中包含了一些文件,我添加了所有与angularJS相关的文件。 I have also added the controller file that i need to test 我还添加了我需要测试的控制器文件

files: [
      'src/lib/angular/angular.min.js',
      'src/lib/angular-mocks/angular-mocks.js',
      'src/lib/angular-resource/angular-resource.min.js',
      'src/lib/angular-route/angular-route.min.js',
      'src/app/app.js',
      'src/app/home/home.controller.js',
      'src/test/specs/*.js'
    ],

kindly pinpoint me, what is that I am doing wrong... 请指出我,我做错了什么...

Mock out the $state object in your unit test. 在单元测试中模拟$ state对象。

var mockState = { go: function() {} };
var HomeCtrl = $controller('HomeCtrl', { $scope: scope, $state: mockState });

The $injector:modulerr is most likely related to your use of $state in your controller. $ injector:modulerr很可能与您在控制器中使用$ state有关。 Instead of mocking, you could try adding the library to your karma config, and loading the module in your unit test. 除了模拟之外,您可以尝试将库添加到您的业力配置中,然后在单元测试中加载模块。

'src/lib/angular-ui-router/release/angular-ui-router.min.js'

beforeEach(module('ui.router'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么在这里出现Angular $ injector:modulerr错误? 使用1.5 Beta - Why am I getting the Angular $injector:modulerr error here? Using 1.5 beta 为什么我收到AngularJS错误:$ injector:modulerr模块错误 - Why am I getting AngularJS Error: $injector:modulerr Module Error 为什么在此基本Controller中收到“错误:$ injector:modulerr模块错误”? - Why am I getting 'Error: $injector:modulerr Module Error' in this basic Controller? 为什么我得到'错误:[$ injector:modulerr] http://errors.angularjs.org/1.2.21/$injector/modulerr' - Why I am getting ' Error: [$injector:modulerr] http://errors.angularjs.org/1.2.21/$injector/modulerr' 我在angular js Uncaught Error中遇到这样的错误:[$injector:modulerr] - i am getting error like this in angular js Uncaught Error: [$injector:modulerr] 我遇到了未捕获的错误:[$ injector:modulerr]路由上的角度js应用程序问题 - I am getting Uncaught Error: [$injector:modulerr] Issue on angular js application on routing Angular:我在喷油器模块上不断收到此错误 - Angular: I keep getting this error on injector modulerr 我正在尝试根据约翰·帕帕(John papa)的风格指南来重构我的角度代码-我遇到了未知的喷油器错误-未知的提供程序 - i am trying to refactor my angular code according to john papa's style guide- I am getting an unknown injector error - unknown provider 为什么会出现 Uncaught Error: [$injector:modulerr] 错误? - why am getting Uncaught Error: [$injector:modulerr] error? AngularJS + Jasmine单元测试错误:[$ injector:modulerr] - AngularJS + Jasmine unit test Error: [$injector:modulerr]
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM