【问题标题】:What's the right way to test this controller?测试此控制器的正确方法是什么?
【发布时间】:2015-05-12 15:11:52
【问题描述】:

我正在使用 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';
});

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

【问题讨论】:

    标签: javascript angularjs unit-testing jasmine karma-runner


    【解决方案1】:

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

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

    【讨论】:

    • 我正在编写单元测试 - 我不明白如何使用日志服务来测试我的控制器。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多