所以在我的工厂中,我有一个请求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
这是采取。
我错过了什么?