测试角度控制器定义为angular.module('myApp')。controller(

时间:2013-04-07 23:29:23

标签: javascript unit-testing angularjs karma-runner

我正在玩https://github.com/angular/angular-seed

控制器在app / controllers.js中定义,如此

'use strict';
function MyCtrl1() {}
MyCtrl1.$inject = [];

这不会传递jshint,因为在app / app.js中引用了MyCtrl1,而不是在我的全局列表中。

根据Brian Ford和其他人的说法,我读过首选的风格是

angular.module('myApp').controller('MyCtrl1', [], function () {});

我更喜欢这个,因为它不在全球范围内,但现在我的测试规范失败了,因为这不再适用了:

var myCtrl1;
beforeEach(function(){
  myCtrl1 = new MyCtrl1();
});

如何获得对此控制器的引用,该控制器以“首选”样式定义以进行测试?

2 个答案:

答案 0 :(得分:3)

由于Javito和Xesued都有信用:

beforeEach(module('myApp'));
var scope, ctrl;
beforeEach(inject(function($controller, $rootScope) {
    scope = $rootScope.$new();
    ctrl = $controller('MyCtrl1', {$scope: scope});
}));

答案 1 :(得分:0)

尝试,

beforeEach(inject(function($controller) {
    scope = {};    
    MyCtrl1 = $controller('MyCtrl1', {
      $scope: scope
    });
  }));