如何测试通过angularjs中的module.config创建的控制器

时间:2014-03-06 11:09:19

标签: angularjs

我有一个以下面的方式定义的控制器,它完美无缺。但是当我尝试测试这个控制器时,它说“(控制器名称)”不是一个函数,未定义“。我怎样才能测试这样定义的控制器。

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);
    }));
});

1 个答案:

答案 0 :(得分:1)

如@PaoloMoretti的评论中所述,您不应在全局范围内定义控制器(除非进行原型设计)。而是将控制器定义为模块的一部分:

var mainModule = angular.module('module1');

mainModule.controller('home', function($scope) {

    $scope.test = "hello";
});

然后,当您在测试中使用此行时:

beforeEach(module('module1'));

控制器可供测试。