So in meiner Fabrik habe ich eine Schleife, die HTTP-Aufrufe anfordert und fügt sie zu einem Versprechen Array. Ich mache dann eine $q.all
auf das Ergebnis, um ein Modell zu bauen. Wenn ich komme, um das zu testen, kann ich HTTP nicht bekommen, um alle Anrufe zu machen, es macht nur den letzten, ich brauche es, um alle Anrufe zu machen und das Modell zu bauen. unten sehr abgeholzt Code, (I 7 Termine verwenden, aber wollte die Dinge kurz halten)Unit Test Mehrere HTTP-Anfragen
Fabrik-Code
function getLatestData(){
var dateArray= ['2017-09-21','2017-09-22']
for (i = 0; i < 2; i++) {
var url = 'data-server/date/[i]'
promises.push(getData(url)); // getData is a simple $http function call.
}
return $q.all(promises).then(function(response){
buildModel(reponse);
});
}
Also, wenn ich dies zu testen kommen, ich habe so etwas wie (Ich habe eine Schleife versucht, aber das ist fehlgeschlagen).
httpBackend.expectGET('data-server/date/2017-09-21').respond(mockData[0]);
httpBackend.expectGET('data-server/date/2017-09-22').respond(mockData[1]);
rootScope.$apply();
modelFactory.getLatestData().then(function(response){
expect(response).toEqual(mockModelData);
})
So console.log ich die URL bekommen, und ich sehe die alle URL-Anforderungen sind die gleichen, sie nicht Aktualisierung zu sein scheinen, die
Error: Unexpected request: GET 'data-server/date/2017-09-22'
Expected GET 'data-server/date/2017-09-21'
in diesem Fehler führt, weil es immer ist die zuletzt httpBackend.expectGET
das ist genommen.
Was fehlt mir?