Ich versuche, einen Code zu schreiben, um den Serviceaufruf zu testen, der in meinem Controller ausgeführt wird. Ich versuche, diese spezielle Funktion im Controller zu testen, der den Serviceanruf ausführt und die Daten bringt. Derzeit versuche ich mit lokalen json, aber es wird tatsächlich einen Service-Anruf.Ich kann keinen HTTP-Test der Einheit testen, der über den Controller erfolgt.
Ich habe gelernt, dass zuerst ich ein Spion-Objekt erstellen muss, aber ich bekomme den Fehler, mein Ziel ist es, Unit-Test erfolgreich den HTTP-Aufruf in der Controller passiert.
Ich bin neu in der Unit Testing .Pasting meinen Code, bitte Sie mir bitte helfen, kämpfen in diesem von vielen Tagen. Auch ich habe durch viele Lösungen gegangen, sie sind so unterschiedlich machen verwirrt.Ihre Hilfe ist sehr geschätzt
Servicecode:
//xlpApp is the module name
xlpApp.factory('xlpServices', ['$rootScope', '$http', function($rootScope,
$http) {
var xlpServices = {};
xlpServices.getProgramData = function(){
return $http.get(scripts/services/data/unitTesting.json');
};
unitTesting.json Code:
{
"name":"unit testing"
}
Controller-Code:
$scope.events = {
programData: function(){
xlpServices.getProgramData().then(function(response) {
if (response && response.data) {
$scope.testVariable= response.data.name;
}
});
},
selectSortingType : function(type) {
$scope.selectedSorting = type;
selectedFilter.sortingBy = $scope.selectedSorting;
}
}
$scope.events.programData();
Einheit Testcode:
describe('myProgramGpmCtrl', function() {
beforeEach(module('xlp'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('service call test', function() {
var xlpServices , myService , $q;
var $scope = {};
beforeEach(inject(function(xlpServices,_$q_){
xlpServices = xlpServices;
$q = _$q_;
var controller = $controller('myProgramGpmCtrl', { $scope: $scope });
myService = jasmine.createSpyObj('xlpServices',['getProgramData']);
}));
it('Service call test ', function() {
expect(myService.getProgramData).toHaveBeenCalled();
});
});
});
ERROR:
Expected spy xlpServices.getProgramData to have been called.
Vielen Dank für Ihre Hilfe. Für mich geht das . Nachdem Sie die Funktion toHaveBeenCalled() verwendet haben, können Sie mir sagen, wie ich überprüfen kann, ob die Serviceantwort 200 ist. Falls die Antwort 500 ist, wie kann ich das wissen? – GiggleGirl
Aktualisierte die Antwort – Thaadikkaaran
Danke für Ihre Hilfe. – GiggleGirl