Ho una funzione abbastanza semplice che restituisce una .ajax jQuery) promessa (come ad esempio:Come testare correttamente l'unità jQuery's .ajax() promette di usare Jasmine e/o Sinon?
CLAW.controls.validateLocation = function(val, $inputEl) {
return $.ajax({
url: locationServiceUrl + 'ValidateLocation/',
data: {
'locationName': val
},
beforeSend: function() {
$inputEl.addClass('busy');
}
}).done(function(result) {
// some success clauses
}).fail(function(result) {
// some failure clauses
}).always(function() {
// some always clauses
});
}
Per la maggior parte, questa nuova interfaccia promesse funziona come un sogno, ed eliminando le piramidi di richiamata quando si utilizza jQuery di .ajax() è fantastico. Tuttavia, non posso per la vita di me capire come verificare correttamente queste promesse con Jasmine e/o Sinon:
tutta la documentazione di Sinon presuppone che si sta utilizzando vecchia scuola callback; Non vedo un solo esempio di come usarlo con promesse/deferreds
Quando si tenta di utilizzare un gelsomino o Sinon spiare spiare $ .ajax, la spia è effettivamente sovrascrive la promessa, per cui il suo
done
,fail
, ealways
clausole non esistono più sulla funzione ajax, quindi la promessa non risolve e lancia un errore invece
mi piacerebbe davvero solo l'amore un esempio o due di come testare questi nuovi jQuery .ajax() promette con le librerie di test sopra menzionate. Ho raschiato la rete abbastanza intensamente e non ho davvero dragato nulla per farlo. L'unica risorsa che ho trovato menzionata usando Jasmine.ajax, ma vorrei evitare che, se possibile, visto che Sinon fornisce la maggior parte delle stesse funzionalità out-of-the-box.
Questo ha funzionato meravigliosamente; grazie mille! –
Nessun problema, un piacere;) – ggozad
Qualche idea per il modo Sinon? – lucke84