Javascript 什么';测试这个控制器的正确方法是什么?

Javascript 什么';测试这个控制器的正确方法是什么?,javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我正在使用angular.js+jasmine为控制器编写一个测试 假设我有一个控制器: angular.module('app').controller('HomePageCtrl', function($scope, Homepage, posts, topics, photos, sideBar) { $scope.slide = (photos || [])[0]; $scope.posts = Homepage.posts(posts); $scope.

我正在使用angular.js+jasmine为控制器编写一个测试

假设我有一个控制器:

angular.module('app').controller('HomePageCtrl', function($scope, Homepage, posts, topics, photos, sideBar) {
    $scope.slide   = (photos || [])[0];
    $scope.posts   = Homepage.posts(posts);
    $scope.topics  = Homepage.topics(topics);
    $scope.sideBar = sideBar;
    $scope.template = '/templates/home-page.html';
});

此控制器只有作用域变量分配,没有函数。如何为该控制器编写测试?我需要检查每个变量是否已定义?每个变量都有正确的值?

您可以使用日志服务(如果这是您的意思)来测试变量是否为空

angular.module('logExample', [])
.controller('LogController', ['$scope', '$log', function($scope, $log) {
  $scope.$log = $log;
  $scope.message = 'Hello World!';
}]);

您可以将所有初始化逻辑放入一个公开的函数中,以便能够从测试中调用它

angular.module('app').controller('HomePageCtrl', function($scope, Homepage, posts, topics, photos, sideBar) {

    $scope.activate = function () {
        $scope.slide   = (photos || [])[0];
        $scope.posts   = Homepage.posts(posts);
        $scope.topics  = Homepage.topics(topics);
        $scope.sideBar = sideBar;
        $scope.template = '/templates/home-page.html';
    }

    $scope.activate();
});

我正在编写一个单元测试——我不明白如何使用日志服务来测试我的控制器。