2

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

在 app/controllers.js 中定义了一个控制器,如下所示

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

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

根据布赖恩福特和其他人的说法,我读过的首选风格是

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

我更喜欢这个,因为它不在全局范围内,但现在我的睾丸规格失败了,因为它不再起作用了:

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

为了测试目的,我如何获取以“首选”样式定义的此控制器的引用?

4

2 回答 2

3

归功于 Javito 和 Xesued:

beforeEach(module('myApp'));
var scope, ctrl;
beforeEach(inject(function($controller, $rootScope) {
    scope = $rootScope.$new();
    ctrl = $controller('MyCtrl1', {$scope: scope});
}));
于 2013-04-10T14:19:40.693 回答
0

尝试,

beforeEach(inject(function($controller) {
    scope = {};    
    MyCtrl1 = $controller('MyCtrl1', {
      $scope: scope
    });
  }));
于 2013-04-09T07:50:39.500 回答