J'ai une fonction assez simple qui renvoie une promesse jQuery .ajax() comme telle :
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
});
}
Dans l'ensemble, cette nouvelle interface de promesses fonctionne comme un rêve, et l'élimination des pyramides de callback lors de l'utilisation de .ajax() de jQuery est formidable. Cependant, je n'arrive pas à trouver comment tester correctement ces promesses à l'aide de Jasmine et/ou Sinon :
-
Toute la documentation de Sinon suppose que vous utilisez la vieille méthode à l'ancienne ; je ne vois pas un seul exemple de comment l'utiliser avec des promesses/deferreds
-
Lorsque l'on tente d'utiliser un espion Jasmine ou Sinon pour espionner $.ajax, l'espion écrase effectivement le prometteur. écrase effectivement la promesse, de sorte que sa fonction
done
,fail
, etalways
n'existent plus sur la fonction ajax, de sorte que la promesse n'est jamais résolue et génère une erreur à la place.
J'aimerais vraiment avoir un ou deux exemples de la façon de tester ces nouvelles promesses jQuery .ajax() avec les librairies de test susmentionnées. J'ai parcouru le net assez intensément et je n'ai pas vraiment trouvé quelque chose pour le faire. La seule ressource que j'ai trouvée mentionnait l'utilisation de Jasmine.ajax, mais j'aimerais éviter cela si possible, vu que Sinon fournit la plupart des mêmes capacités prêtes à l'emploi.