Ich habe ein Problem, wenn ich einen Jasmin-Komponententest mit $ httpBackend Backend Mock ausführen. Ich möchte den von einem Serviceanruf zurückgegebenen Wert testen. Es ruft den Dienst an und trifft den Endpunkt, aber ich erhalte weiterhin einen Fehler von der Methode selbst. Ich bin mir nicht sicher, was mir fehlt, damit das funktioniert. Jede Hilfe wird wirklich geschätzt.
// Fehler
TypeError: 'undefined' is not an object (evaluating 'data[0].data')
/// Unit-Test
describe("DataService", function() {
describe('testing service', function() {
var TheService, scope;
beforeEach(function() {
module(moduleName);
module('services');
});
beforeEach(inject(function($injector,$rootScope) {
TheService = $injector.get('TheService');
scope=$rootScope.$new();
}));
it('should have a method defined', function() {
expect(TheService.getStuff).toBeDefined();
});
it('should have a method defined', inject(function($httpBackend) {
var mock = { data: 'World' };
$httpBackend.whenGET("/theurl/getStuff").respond({ data: 'World' });
$httpBackend.expectGET("/theurl/getStuff");
TheService.getStuff();
scope.$digest();
expect(TheService.getStuff).toEqual(mock);
$httpBackend.flush();
}));
});
});
// Service-Methode
function TheService($http, $q) {
var vm = this;
vm.getStuffs = null;
vm.getStuff = getStuff;
vm.theresponse = {};
function getStuff() {
var deferred = $q.defer();
$http({
method: 'GET',
url: "/theurl/getStuff"
}).success(function(data){
vm.theresponse = data[0].data
deferred.resolve(vm.theresponse);
}).error(function(){
deferred.reject('An error occurred');
});
return deferred.promise;
}
}
danke @JB. Ich kann nicht glauben, dass ich das verpasst habe. – Jimi