Ich schreibe einen Testfall für das folgende Szenario. Die Codeabdeckung ist nicht vollständig abgedeckt. Ich weiß nicht, ob es möglich ist zu schreiben oder nicht. wenn ich frage etwas falsch Mittel freundlich leiten mich einen Testfall für dieses Szenario zu schreiben und dieses Problem in vermeiden future.At-dest seinem möglichen sagen oder nichtWie schreiben wir Unit-Testfälle (Jasmine) für verschachtelte Funktionen?
(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();
})
Oben ist mein Testfall es auf dem Kind vertuschen Controller und nicht seine verschachtelten Funktionen. Können wir auf die Scope-Variable in Test Case aus der controller.js-Datei zugreifen. Und auch die Codeabdeckung deckt nur die ChangeDataController-Funktion allein ab, nicht ihre Funktionen auf der Innenseite. Bitte hilf mir, einen Testfall zu schreiben und meine Zweifel zu klären.
Wie die Antwort schon vermuten lässt, dass jede Funktion ausspioniert werden soll oder verspottet sollte als Scope-Methode (oder Controller-Methode) verfügbar gemacht. – estus
hi estus Ich habe meinen Code aktualisiert. Und kannst du versuchen, herauszufinden, was ich falsch gemacht habe? – Sathish
Sie haben addData nicht als Methode angegeben, und editDatas wird aus irgendeinem Grund in ChangeDataController festgelegt. Es gibt überhaupt keinen Grund, $ scope wie das in der Komponente zu verwenden, das ist antipattern. – estus