我有一个以下面的方式定义的控制器,它完美无缺。但是当我尝试测试这个控制器时,它说“(控制器名称)”不是一个函数,未定义“。我怎样才能测试这样定义的控制器。
controller.js
var mainModule = angular.module('module1');
function home($scope) {
$scope.test = "hello";
}
home.$inject = ["$scope"];
mainModule.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'partials/home.html',
controller: home
});
}
]);
testSpec.js
describe("Test home controller", function () {
beforeEach(module('module1'));
it("test the controller ", inject(function ($rootScope, $controller) {
var ctrl = $controller("home", {
$scope: $rootScope
});
expect($rootScope.items.length).toBe(3);
}));
});
答案 0 :(得分:1)
如@PaoloMoretti的评论中所述,您不应在全局范围内定义控制器(除非进行原型设计)。而是将控制器定义为模块的一部分:
var mainModule = angular.module('module1');
mainModule.controller('home', function($scope) {
$scope.test = "hello";
});
然后,当您在测试中使用此行时:
beforeEach(module('module1'));
控制器可供测试。