使用 Jasmine 测试 Lodash sortBy 函数参数
Testing Lodash sortBy function argument using Jasmine
我的项目中有一个控制器是这样的:
define(function (require) {
'use strict';
function AllOrgsController($rootScope, $uibModalInstance) {
var vm = this;
var clonedOrgs = _.cloneDeep($rootScope.userData.org);
vm.modelContainer = _.sortBy(clonedOrgs, function (org) {
return org.organizationName.toLowerCase();
});
vm.openFacilityModal = function () {
$uibModalInstance.close();
};
vm.saveOrgsModal = function () {
$uibModalInstance.close({ $value: vm.currentFacility });
};
vm.cancelOrgsModal = function () {
$uibModalInstance.dismiss();
};
}
AllOrgsController.$inject = ['$rootScope', '$uibModalInstance'];
return AllOrgsController;
});
但是根据 Istanbul,Lodash 的 _.sortBy
方法中使用的匿名函数并未涵盖。由于我是单元测试的菜鸟,所以我还没有弄清楚为什么 - 有人知道吗?
_.sortBy
应该为您提供的 clonedOrgs
参数的每个元素调用您传递的函数。由于伊斯坦布尔检测到 passed-in 函数从来不是 运行,这一定意味着 clonedOrgs
在您的测试中始终为空(或不是有效数组)。因此,您可以通过编写 $rootScope.userData.org
数组包含元素的测试来确保覆盖该方法。
我的项目中有一个控制器是这样的:
define(function (require) {
'use strict';
function AllOrgsController($rootScope, $uibModalInstance) {
var vm = this;
var clonedOrgs = _.cloneDeep($rootScope.userData.org);
vm.modelContainer = _.sortBy(clonedOrgs, function (org) {
return org.organizationName.toLowerCase();
});
vm.openFacilityModal = function () {
$uibModalInstance.close();
};
vm.saveOrgsModal = function () {
$uibModalInstance.close({ $value: vm.currentFacility });
};
vm.cancelOrgsModal = function () {
$uibModalInstance.dismiss();
};
}
AllOrgsController.$inject = ['$rootScope', '$uibModalInstance'];
return AllOrgsController;
});
但是根据 Istanbul,Lodash 的 _.sortBy
方法中使用的匿名函数并未涵盖。由于我是单元测试的菜鸟,所以我还没有弄清楚为什么 - 有人知道吗?
_.sortBy
应该为您提供的 clonedOrgs
参数的每个元素调用您传递的函数。由于伊斯坦布尔检测到 passed-in 函数从来不是 运行,这一定意味着 clonedOrgs
在您的测试中始终为空(或不是有效数组)。因此,您可以通过编写 $rootScope.userData.org
数组包含元素的测试来确保覆盖该方法。