【问题标题】:AngularJS with Karma: $controller not defined error带有 Karma 的 AngularJS:$controller 未定义错误
【发布时间】:2014-02-27 09:44:59
【问题描述】:

我对测试很陌生,但我认为用这个项目开始一些测试是个好主意。当我运行 grunt karma:watch 时,我收到此配置文件的错误。

我有一个配置文件,其中包含:

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

basePath:  '../..',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],

// list of files / patterns to load in the browser
files: [
'src/js/vendors/angular.js',
'src/js/vendors/angular-mock.js',
'src/js/app/navigation/*js',
'src/**/*.js',
'src/js/vendors/*.js',
'src/test/unit/**/*.spec.js',
'dist/templates/**/*.js'
],

// list of files / patterns to exclude
exclude: [],

// web server port
port: 8080,

// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,


// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,

// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: ['Chrome'],


// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: false
});
};

我的单元测试看起来像这样:

describe('NavCtrl', function(){
  var scope;
  beforeEach(angular.mock.module('integra'));
  beforeEach(angular.mock.inject(function($rootScope,$controller){
     scope = $rootScope.$new();

     $controller('NavCtrl', {$scope: scope});
  }));
  $scope.type =  {
     language: "English",
     i18n: "en_EN"
  };

  $scope.option(type);
  expect($scope.type.i18n).toEqual('en_EN');
})

这是错误:

Chrome 33.0.1750 (Linux) ERROR
Uncaught ReferenceError: $controller is not defined
at ~/Project/theApp/src/test/unit/app/navigation/NavCtrl.spec.js:2

为什么没有定义 $controller?我应该在哪里定义它?我不想测试的控制器位于 /src/js/navigation/NavCtrl.js

【问题讨论】:

  • 你有'src/js/app/navigation/*js'。我认为应该是'src/js/app/navigation/*.js'。错字?
  • 我喜欢 stackoverflow。

标签: javascript angularjs gruntjs jasmine karma-runner


【解决方案1】:

配置文件中控制器文件的路径错误。

二手

files: [
   ...,
   'src/js/app/navigation/*js',
   ...
],

代替

files: [
   ...,
   'src/js/app/navigation/*.js',
   ...
],

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2023-03-26
    • 2017-05-03
    • 2015-09-03
    相关资源
    最近更新 更多