Possiedo un servizio AngularJS che esegue una richiesta GET $ http e memorizza la risposta nella cache localmente. È progettato per gestire più chiamate contemporaneamente, in modo tale che solo i dati della chiamata finale vengano memorizzati nella cache.
In particolare, se si verifica quanto segue:
- Richiesta A introduttiva
- Richiesta B introduttiva
- Richiesta B completati
- Richiesta A Completato
Il risultato è che la risposta della richiesta B è memorizzato nella cache, perché è stato avviato per ultimo.
Tuttavia, sto riscontrando dei problemi con il test dell'unità in Jasmine.
Posso impostare due aspettative $ httpBackend.expectGET(), ma posso solo svuotarle nell'ordine in cui sono richieste.
In sostanza ho bisogno di essere in grado di così qualcosa di simile:
$httpBackend.expectGET('/one').respond(200, data1);
$httpBackend.expectGET('/two').respond(200, data2);
myService.doSomething('/one');
myService.doSomething('/two');
$httpBackend.flush('/two');
$httpBackend.flush('/one');
expect(myService.data).toBe(data2);
Qualcuno può suggerire un modo pulito per raggiungere questo obiettivo?
Forse puoi giocare con la proprietà count https://docs.angularjs.org/api/ngMock/service/$httpBackend#flush ma non penso che sia sufficiente –
Sfortunatamente la documentazione dice specificatamente del conteggio proprietà che specifica il "Numero di risposte da scaricare (nell'ordine in cui sono arrivate)". Sospetto che dovrò fare qualcosa di intelligente con le spie per cambiare il comportamento di $ http o $ httpBackend in qualche modo. –