因果报错参数'Controller'不是函数,未定义

泰蒂亚娜·丘普里纳

尝试测试控制器时出现问题。运行测试时出现错误

Error: [ng:areq] Argument 'MainCtrl' is not a function, got undefined   http://errors.angularjs.org/1.3.8/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got%20undefined
        at assertArg (/Users/tetianachupryna/project/bower_components/angular/angular.js:1577)
        at assertArgFn (/Users/tetianachupryna/project/bower_components/angular/angular.js:1588)
        at /Users/tetianachupryna/project/bower_components/angular/angular.js:8418
        at /Users/tetianachupryna/project/src/spec/controllers/main-controller.spec.js:11
        at /Users/tetianachupryna/project/src/spec/controllers/main-controller.spec.js:17
        at /Users/tetianachupryna/project/node_modules/karma-jasmine/lib/adapter.js:184
        at http://localhost:9877/karma.js:185
        at http://localhost:9877/context.html:51

我知道SO充满了类似的问题。但是我通常在Angular和JS中总为null,因此这些答案对我没有帮助。从关于SO的类似问题中,我发现我的问题是控制器的定义错误,但是我仍然无法弄清楚自己做错了什么。我已经堆好了,恳求您的帮助。

首先是我的src / app / index.js文件,其中定义了我的模块

var app = angular.module('myModule', [
  'ngAnimate',
  'ngSanitize',
  'ngResource',
  'ui.router',
  'pascalprecht.translate',
  'thing1',
  'thing2']);

这是src / app / controllers / main-controller.js

angular.module('myModule').controller('MainCtrl', [
    '$scope',
    '$state',
    function ($scope, $state) {
      $scope.state = $state;
      //***
      $scope.isBigStep = function isBigStep() {
        return $state.$current.step == 3;
      };    
  }]);

最后是带有测试src / spec / controllers / main-controller.spec.js的文件

describe('MainCtrl', function() {
  var scope, $state, createController;

  beforeEach(inject(function ($rootScope, $controller) {
    scope = $rootScope.$new();

    createController = function() {
      return $controller('MainCtrl', {
        '$scope': scope
      });
    };
  }));

  it('should make 3 as current step', function() {
    var controller = createController();
    expect(scope.isBigStep()).toBe(true);
  });
});

在业力配置中,我拥有所有这些文件

files: [
      'bower_components/angular/angular.js',
      'bower_components/angular-mocks/angular-mocks.js',
      'src/app/index.js',
      'src/app/controllers/*.js',
      'src/spec/controllers/*.js'
    ],

为了运行测试,我使用RubyMine中的karma-runner插件。

感谢您的帮助!

PSL

您缺少的是将模块添加到beforeEach挂钩中以进行测试设置。否则将找不到控制器。因此添加beforeEach(module('myModule'))

describe('MainCtrl', function() {
  var scope, $state, createController;

  beforeEach(module('myModule')); //<--- Hook module

  beforeEach(inject(function ($rootScope, $controller) {
    scope = $rootScope.$new();

    createController = function() {
      return $controller('MainCtrl', {
        '$scope': scope
      });
    };
  }));

  it('should make 3 as current step', function() {
    var controller = createController();
    expect(scope.isBigStep()).toBe(true);
  });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

参数'controller'不是函数,未定义

来自分类Dev

因果报错:未定义myApp

来自分类Dev

因果报错-预期未定义

来自分类Dev

因果报错-预期未定义

来自分类Dev

角度错误:“参数'Controller'不是函数,未定义”

来自分类Dev

angularjs + requirejs =参数'controller'不是函数,未定义

来自分类Dev

角度错误:“参数'Controller'不是函数,未定义”

来自分类Dev

因果报错无法调用未定义的方法“模块”

来自分类Dev

错误:[ng:areq]参数'Controller'不是一个函数,未定义

来自分类Dev

参数'indexController'不是函数,未定义

来自分类常见问题

错误:参数不是函数,未定义

来自分类Dev

参数“ myAction”不是函数,未定义

来自分类Dev

参数“ ProductListCtrl”不是函数,未定义

来自分类Dev

错误:[ng:areq]参数'TasksCtrl'不是函数,未定义

来自分类Dev

错误:[ng:areq]参数'MyCtrl'不是函数,未定义

来自分类Dev

AngularJS-参数“ MenuCtrl”不是函数,未定义

来自分类Dev

控制器错误:参数不是函数,未定义

来自分类Dev

angularJS 1.4.0参数'MainController'不是函数,未定义

来自分类Dev

参数'PostCtrl'不是一个函数,未定义

来自分类Dev

参数控制器不是函数,未定义

来自分类Dev

错误:[ng:areq]参数不是函数,未定义

来自分类Dev

AngularJS错误:参数“ FirstCtrl”不是函数,未定义

来自分类Dev

收到错误-“参数'myCtrl'不是函数,未定义”

来自分类Dev

参数'CarouselDemoCtrl'不是一个函数,未定义

来自分类Dev

“错误:[ng:areq]参数'HelloHell'不是函数,未定义

来自分类Dev

参数'appController'不是一个函数,未定义

来自分类Dev

仍然让Controller不是函数,未定义,而我没有全局定义控制器

来自分类Dev

因果单元测试“未定义”不是函数错误

来自分类Dev

因果单元测试“未定义”不是函数错误

Related 相关文章

  1. 1

    参数'controller'不是函数,未定义

  2. 2

    因果报错:未定义myApp

  3. 3

    因果报错-预期未定义

  4. 4

    因果报错-预期未定义

  5. 5

    角度错误:“参数'Controller'不是函数,未定义”

  6. 6

    angularjs + requirejs =参数'controller'不是函数,未定义

  7. 7

    角度错误:“参数'Controller'不是函数,未定义”

  8. 8

    因果报错无法调用未定义的方法“模块”

  9. 9

    错误:[ng:areq]参数'Controller'不是一个函数,未定义

  10. 10

    参数'indexController'不是函数,未定义

  11. 11

    错误:参数不是函数,未定义

  12. 12

    参数“ myAction”不是函数,未定义

  13. 13

    参数“ ProductListCtrl”不是函数,未定义

  14. 14

    错误:[ng:areq]参数'TasksCtrl'不是函数,未定义

  15. 15

    错误:[ng:areq]参数'MyCtrl'不是函数,未定义

  16. 16

    AngularJS-参数“ MenuCtrl”不是函数,未定义

  17. 17

    控制器错误:参数不是函数,未定义

  18. 18

    angularJS 1.4.0参数'MainController'不是函数,未定义

  19. 19

    参数'PostCtrl'不是一个函数,未定义

  20. 20

    参数控制器不是函数,未定义

  21. 21

    错误:[ng:areq]参数不是函数,未定义

  22. 22

    AngularJS错误:参数“ FirstCtrl”不是函数,未定义

  23. 23

    收到错误-“参数'myCtrl'不是函数,未定义”

  24. 24

    参数'CarouselDemoCtrl'不是一个函数,未定义

  25. 25

    “错误:[ng:areq]参数'HelloHell'不是函数,未定义

  26. 26

    参数'appController'不是一个函数,未定义

  27. 27

    仍然让Controller不是函数,未定义,而我没有全局定义控制器

  28. 28

    因果单元测试“未定义”不是函数错误

  29. 29

    因果单元测试“未定义”不是函数错误

热门标签

归档