Sto provando a impostare un timeout nel mio controller in modo che se una risposta non viene ricevuta in 250 ms, dovrebbe fallire. Ho impostato il mio test unitario per avere un timeout di 10000 in modo che questa condizione sia soddisfatta, qualcuno può indicarmi la giusta direzione? (EDIT Sto cercando di ottenere questo risultato senza utilizzare il servizio $ http che so fornisce funzionalità di timeout)Impostazione di un gestore di timeout su una promessa in angularjs
(EDIT - i miei altri test di unità stavano fallendo perché non stavo chiamando il timeout.flush su di loro, ora ho solo è necessario far partire il messaggio di timeout quando viene restituita una promessa indefinita da promiseService.getPromise(). Ho rimosso il codice iniziale dalla domanda).
promiseService (promessa è una variabile suite di test avermi permesso di usare un comportamento diverso per la promessa in ogni suite di test prima di applicare, ad esempio, respingono in uno, successo in un altro)
mockPromiseService = jasmine.createSpyObj('promiseService', ['getPromise']);
mockPromiseService.getPromise.andCallFake(function() {
promise = $q.defer();
return promise.promise;
})
funzione il controllore di quella in fase di test -
$scope.qPromiseCall = function() {
var timeoutdata = null;
$timeout(function() {
promise = promiseService.getPromise();
promise.then(function (data) {
timeoutdata = data;
if (data == "promise success!") {
console.log("success");
} else {
console.log("function failure");
}
}, function (error) {
console.log("promise failure")
}
)
}, 250).then(function (data) {
if(typeof timeoutdata === "undefined") {
console.log("Timed out")
}
},function(error){
console.log("timed out!");
});
}
di prova (di solito risolvo o rifiutare la promessa qui, ma non impostando esso sto simulando un timeout)
it('Timeout logs promise failure', function(){
spyOn(console, 'log');
scope.qPromiseCall();
$timeout.flush(251);
$rootScope.$apply();
expect(console.log).toHaveBeenCalledWith("Timed out");
})
Potete mostrarci 'promiseService.getPromise()'? –
Non è ancora implementato Sto cercando di farlo per primo, dovrebbe essere collegato all'implementazione del servizio promessa? – SMC
Come puoi dire che non funziona se non lo hai ancora implementato –