次のシナリオのテストケースを記述しています。コードカバレッジは完全にはカバーされていません。私は書くことができるかどうか分からない。私は何も悪いことを言わせれば親切に上記 ネストされた関数のUnitテストケース(Jasmine)はどのように記述しますか?
(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();
})
その可能かどうかを教えてくれ、このシナリオのためのテストケースを書き、future.At-以上にこの問題を回避するために私を導く意味私のテストケースで、それは子供にまでカバーすることができますそのネストされた関数ではありません.content.jsファイルからtest caseのスコープ変数にアクセスできるようにしてください。また、コードカバレッジは、内部の関数ではなくChangeDataController関数だけをカバーします。テストケースを作成し疑いを明確にするのを助けてください。
答えが示唆するように、スパイや嘲笑する必要があり、すべての機能があるべきスコープ(またはコントローラ)メソッドとして公開されます。 – estus
こんにちはestus私は私のコードを更新しました。そして、あなたが間違っていたものを見つけることを試みることができますか? – Sathish
メソッドとしてaddDataを公開しておらず、何らかの理由でeditDataがChangeDataController内で設定されています。コンポーネントに$スコープを使用する理由はまったくありません。これは反パターンです。 – estus