AngularJS私有功能单元测试混乱

时间:2016-01-20 16:07:05

标签: javascript angularjs unit-testing jasmine

我已经阅读了几篇文章和SO问题,但我仍然有点模糊我能做什么,不能进行单元测试。

我有一个指令,它返回一个具有几个函数的控制器。其中一些函数有返回语句,而其他函数则没有。我可以在代码覆盖率报告中看到所有函数都可以测试,但只包含带有return语句的函数。是否可以对没有返回语句的控制器功能进行单元测试?如果是,那我该怎么做呢?

directive.js 代码段

result3[0].Project

directive.spec.js

app.directive('directive', function() {
    var theController = ['$scope', function($scope) {
        $scope.add = function() {
            // no return statement, not covered, but is available
        };

        $scope.disableAddButton = function() {
            // has a return statement and is fully covered
        };
    }];

    return: {
        scope: {
            args: '='
        },
        templateUrl: ...,
        restrict: 'A',
        controller: theController
    };
});

1 个答案:

答案 0 :(得分:1)

"单位"您的测试是整个指令/控制器,而不是单个功能。不要试图单独测试每个函数,而是测试调用函数的结果是否符合预期。

例如,add做什么?据推测它会影响某些事情 - 确保已经发生了这种情况。

您的标题还提到了私人功能。这些是"单位"的实施者。已经决定必须完成他们的工作。它们不是对象的公共接口的一部分,因此您不必担心测试它们 - 只需确保该单元执行它的公共接口应该做的事情 - 可能是任何数量的私人职能实际上做的工作。