我正在尝试为循环中的if条件编写测试用例,但是我没有将它作为过滤器的一部分。有什么方法可以测试循环中的if条件。我的测试用例根本不执行这行代码。
以下是我的控制器代码
$scope.init = function()
{
for (var i = 0; i < $scope.tempdata.length; i++) { //mapping of the status to text
if ($scope.tempdata[i].Status == 'U') {
$scope.statusText = 'text1';
}
if ($scope.tempdata[i].Status == 'A' || $scope.tempdata[i].Status == 'W') {
$scope.statusText = 'text2';
}
if ($scope.tempdata[i].Status == 'F') {
$scope.statusText = 'text3';
}
if ($scope.tempdata[i].Status == 'P') {
$scope.statusText = 'text4';
}
if ($scope.tempdata[i].Status == 'E') {
$scope.statusText = 'text5';
}
if ($scope.tempdata[i].Status == 'S') {
$scope.statusText = 'text6';
}
}
}
以下是我的测试用例
it('should set the status', function() {
scope.responseSet = true;
var mockTempData =[{'Status': 'F'}];
scope.tempdata = mockTempData
scope.init();
expect(scope.statusText).toBe(text3);
});
当我运行业力时,我的测试用例失败,预期''为text3。
答案 0 :(得分:2)
更容易判断你是否表明你是如何注射&#34;范围进入控制器测试。但是,我发现调试我的单元测试非常有帮助,仔细地逐步完成它们并确保一切都如我所期望的那样。
你还应该有你的最后一行
expect(scope.statusText).toBe('text3');
请注意,测试代码中的text3应更改为&#39; text3&#39;因为这是实际控制器中的字符串,而不是变量名称。