Donc, dans mon usine, j'ai une boucle qui demande des appels HTTP et les ajoute à un tableau de promesses. Je fais ensuite un $q.all
sur le résultat pour construire un modèle. Quand je viens tester cela, je n'arrive pas à faire passer tous les appels par HTTP, il ne fait que le dernier, j'en ai besoin pour faire tous les appels et construire le modèle. ci-dessous est très coupé le code vers le bas, (je l'utilise 7 dates, mais voulait garder les choses à court)Unité Test plusieurs requêtes HTTP
Code Factory
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);
});
}
Alors, quand je viens de tester, j'ai quelque chose comme (J'ai essayé une boucle mais ça a échoué).
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);
})
Je CONSOLE.LOG l'URL get et je vois toutes les demandes d'URL sont les mêmes, ils ne semblent pas être mise à jour qui se traduit par cette erreur
Error: Unexpected request: GET 'data-server/date/2017-09-22'
Expected GET 'data-server/date/2017-09-21'
parce qu'il est toujours dernier httpBackend.expectGET
c'est pris.
Qu'est-ce qui me manque?