正在为以下场景编写测试用例。代码覆盖率未完全覆盖。我不知道是否可以写作。如果我提出任何错误的意思,请指导我为这个场景编写一个测试用例并避免将来出现这个问题。至少告诉它可能与否
(function() {
'use strict';
angular
.module('myApp')
.component("testLockCtrl", {
templateUrl: 'wwwroot/html/myLocation/testLock.html',
controller: 'testLockCtrl as vm'
})
.controller("testLockCtrl", testLockCtrl);
testLockCtrl.$inject = ['SessionService', 'HttpRequestSoapAPI'];
/*Parent Controller*/
function testLockCtrl($rootScope, $mdDialog) {
vm.ChangeDataController=ChangeDataController;
/*childer controller*/
function ChangeDataController($scope) {
$scope.tempData = true;
/*following functions (child of change data controller) can called in click*/
$scope.editData = function() {
$scope.tempData = false;
}
$scope.editDatas = function() {
/*some code*/
}
}
function addData() {
TC$DialogMgr.tag(function(tagID) {
$mdDialog.show({
locals: { testCase: vm },
controller: ChangeDataController,
parent: angular.element(document.body),
templateUrl: "wwwroot/html/myLocation/addData.html",
clickOutsideToClose: true,
preserveScope: true,
controllerAs: 'vm'
}).then(function() {
}, function() {
}).finally(function() {
TC$DialogMgr.unTag(tagID);
});
}, TC$DialogMgr.type.Input);
}
}
})();
it("Should check if Module Flag status is received", function () {
var data = [{ loc: 'mde', Status: -1 }];
testLockCtrl.ChangeDataController(data);
var testData=testLockCtrl.editDatas ()
expect(testData).toBeDefined();
})
上面是我的测试用例,它可以覆盖子控制器而不是它的嵌套函数。我们可以从controller.js文件中访问测试用例中的作用域变量。而且代码覆盖率仅涵盖ChangeDataController函数,而不仅仅涵盖其内部函数。请帮我写一个测试用例并明确我的疑问。
答案 0 :(得分:0)
答案是你应该公开那些内部函数或间接测试它们。无论何处调用@
方法,您都可以确保已经测试了该函数并将不同的参数传递给调用函数。
或者,如果您将addData
添加到addData
,则可以更轻松地进行测试:
$scope
在你的测试中:
$scope.addData = function() { /* ... */ };