0
我在使用$ httpBackend後端模擬運行茉莉花單元測試時遇到問題。我想測試從服務調用返回的值。它正在調用服務並達到終點,但我一直從方法本身收到錯誤。不知道我錯過了什麼,爲了這個工作。任何幫助真的很感激。
//錯誤
TypeError: 'undefined' is not an object (evaluating 'data[0].data')
///單元測試
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();
}));
});
});
//服務方法
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;
}
}
謝謝@JB。不能相信我錯過了這一點。 – Jimi