所以在我的工廠中,我有一個請求HTTP調用並將它們添加到承諾數組的循環。 然後我對結果做了$q.all
來構建模型。 當我來測試這個,但我不能讓HTTP來做所有的調用,它只做最後一個,我需要它做所有的調用和建立模型。 下面是非常削減代碼,(我用7個日期,但想保持的東西短)單元測試多個HTTP請求
工廠代號
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);
});
}
所以,當我來測試這個,我有類似的東西(我嘗試了一個循環但失敗了)。
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);
})
所以我CONSOLE.LOG的get URL,我看到所有的URL請求都是一樣的,他們似乎沒有要更新導致此錯誤
Error: Unexpected request: GET 'data-server/date/2017-09-22'
Expected GET 'data-server/date/2017-09-21'
,因爲它總是最後httpBackend.expectGET
這是採取。
我錯過了什麼?