加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – $控制器服务在加载控制器时抛出错误

发布时间:2020-12-17 07:37:28 所属栏目:安全 来源:网络整理
导读:我使用角度1.5.8.这是我的代码: describe('My Controller',function() { var MyController; var $controller; var $rootScope; var $state; beforeEach(angular.mock.module('ui.router')); beforeEach(module('app.my.ctrl')); beforeEach(inject(function
我使用角度1.5.8.这是我的代码:
describe('My Controller',function() {
    var MyController;
    var $controller;
    var $rootScope;
    var $state;

    beforeEach(angular.mock.module('ui.router'));
    beforeEach(module('app.my.ctrl'));
    beforeEach(inject(function(_$controller_,_$rootScope_,_$state_) {
        $controller = _$controller_;
        $rootScope = _$rootScope_;
        $state = _$state_;
        MyController = $controller('MyController',{ scope: $rootScope.$new() });
    }));

    describe('#init',function() {
        it('should do something',function() {
            console.log('logStatement',MyController);

            MyController.init();

            expect(true).toBe(true);
        })

    })
});

测试运行器能够找到所有文件,所以这不是一个忘记加载的东西的情况.当我运行这个测试,不仅logStatement不会出现,我得到这个错误:

Argument 'MyController' is not a function,got undefined

这是我的控制器

(function() {
'use strict';

angular
    .module('app.my.ctrl')
    .controller('MyController',MyController);

MyController.$inject = [
    '$scope'
];
/* ngInject */
function MyController($scope) {

    var vm = this;

    vm.hello = 'world';

    vm.init = function() {
        return true;
    }
}

})();

这是我的业务conf文件:

// Karma configuration

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files,exclude)
    basePath: '',// frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],// list of files / patterns to load in the browser
    files: [
      'bower_components/angular/angular.js','bower_components/angular-mocks/angular-mocks.js','bower_components/angular-ui-router/release/angular-ui-router.js','src/controllers/MyController.js','tests/unit/**/*.spec.js',],// list of files to exclude
    exclude: [
      '**/*.swp'
    ],// preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },// test results reporter to use
    // possible values: 'dots','progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['spec'],//  Spec Reporter Config
    specReporter: {
    //     suppressErrorSummary: false,//     suppressFailed: false,//     suppressPassed: false,suppressSkipped: true
    //     showSpecTiming: false
    },// web server port
    port: 9876,// enable / disable colors in the output (reporters and logs)
    colors: true,// level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,// enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,// start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],// Continuous Integration mode
    // if true,Karma captures browsers,runs the tests and exits
    singleRun: true,// Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
};

这是什么意思??我在文档中找不到任何解释这一点的东西.

更新:

我已经读了this answer,答案没有奏效.

尝试将控制器中注入的服务从范围更改为范围
beforeEach(inject(function(_$controller_,_$state_) {
      $controller = _$controller_;
      $rootScope = _$rootScope_;
      $state = _$state_;
      MyController = $controller('MyController',{ $scope: $rootScope.$new()});
}));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读