我已经阅读了几篇文章和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
};
});
答案 0 :(得分:1)
"单位"您的测试是整个指令/控制器,而不是单个功能。不要试图单独测试每个函数,而是测试调用函数的结果是否符合预期。
例如,add
做什么?据推测它会影响某些事情 - 确保已经发生了这种情况。
您的标题还提到了私人功能。这些是"单位"的实施者。已经决定必须完成他们的工作。它们不是对象的公共接口的一部分,因此您不必担心测试它们 - 只需确保该单元执行它的公共接口应该做的事情 - 可能是任何数量的私人职能实际上做的工作。