2

我有一个 AngularJS 应用程序,我正在尝试测试。问题是,每当我尝试注入控制器时,它都会给我一个空对象。

beforeEach( inject(function($rootScope, $controller) {
   console.log($controller) // {}
   scope = $rootScope.$new();
   ctrl = $controller('MenuCtrl', {
     $scope: scope
   });
   console.log(ctrl) // {}
}));

我在 JsFiddle 中附上了我的设置示例和一些评论,我非常感谢一些帮助来解决这个问题。

小提琴

编辑:我也尝试过这样做:

beforeEach(angular.mock.module('Controllers'));

然后我得到:错误:没有模块:控制器

这解决了这个问题:

beforeEach(angular.mock.module('controllers'));

4

2 回答 2

2

感谢Angular 邮件列表 中的 Peter Bacon Darwin 找到了解决方案。我试图调用changeView()控制器。但是,具有此功能的是范围而不是控制器。

再次感谢。

于 2013-02-21T22:10:59.813 回答
0

根据您的代码,

var Controllers = angular.module('controllers', []);

你的测试配置

beforeEach(angular.mock.module('Controllers'));

应该改为

beforeEach(angular.mock.module('controllers'));

使用小写的“C”,因为这是该模块的实际名称。您也可以使用myApp,因为它取决于controllers.

于 2013-02-21T17:38:55.637 回答