Jasmine,'Controller' 不是函数,未定义

Jasmine, 'Controller' is not a function, got undefined

我一直在尝试创建一个示例单元测试,但它一直给我一个错误 "Argument 'CalcController' is not a function, got undefined"。

我看过所有标题相同的问题,并在 Whosebug 中尝试了他们的解决方案,但它们似乎对我不起作用。

calc.controller.js

(function () {
  'use strict';

  angular
    .module('app.calc')
    .controller('CalcController', CalcController);

  /** @ngInject */
  function CalcController($scope) {

    $scope.password = '';
    $scope.grade = function () {
      var size = $scope.password.length;
      if (size > 8) {
        $scope.strength = 'strong';
      } else if (size > 3) {
        $scope.strength = 'medium';
      } else {
        $scope.strength = 'weak';
      }
    }
  }
});

calc.module.js

(function () {
  'use strict';

  angular
    .module('app.calc', [])
    .config(config);

  /** @ngInject */
  function config() {
  }
})();

calc.specs.js

describe('CalcController', function() {
  beforeEach(module('fuse'));
  beforeEach(module('app.calc'));

  var $controller;

  beforeEach(inject(function(_$controller_){
    $controller = _$controller_;
  }));

  describe('$scope.grade', function() {
    it('sets the strength to "strong" if the password length is >8 chars', function() {
      var $scope = {};
      var controller = $controller('CalcController', { $scope: $scope });
      $scope.password = 'longerthaneightchars';
      $scope.grade();
      expect($scope.strength).toEqual('strong');
    });
  });

  describe('test', function() {
    it('should work', function() {
      expect(true).toBe(true);
    });
  });
});

如果您注意到示例函数是为密码输入编写的,那是因为我从同一个项目的工作测试脚本中复制了代码。但显然它的工作方式不同。

干杯

calc.controller.js的自调用函数(function(){...});最后缺少()所以找不到控制器.