Mam dość prostą funkcję, która zwraca .ajax jQuery() obietnicę jako takie:Jak prawidłowo testować jQuery. Ajax() jQuery obiecuje używając Jasmine i/lub 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
});
}
w przeważającej części, to nowy interfejs obietnice działa jak sen, a eliminując piramidy zwrotnych przy użyciu jQuery .ajax() jest świetny. Jednak nie mogę dla życia mnie dowiedzieć się, jak prawidłowo przetestować te obietnice pomocą jaśminu i/lub sinon:
Cała dokumentacja sinon zakłada używasz starej szkoły wywołań zwrotnych; Nie widzę jeden przykład tego, jak go używać z obietnic/deferreds
Gdy próbuje użyć Jasmine lub sinon szpieg szpiegowanie $ .ajax The szpieg jest skutecznie nadpisywania obietnicę, więc jej
done
,fail
, ialways
klauzule nie istnieją już od funkcji ajax, więc obietnica nigdy nie rozwiązuje i rzuca błąd zamiast
bym naprawdę kochać przykład lub dwa jak przetestować te nowe jQuery .ajax() obiecuje z wyżej wymienionymi testowymi bibliotekami. Przeszukałem sieć dość intensywnie i tak naprawdę nie doszedłem do niczego. Jeden zasób, który znalazłem wspomniał, używając Jasmine.ajax, ale chciałbym tego uniknąć, jeśli to możliwe, ponieważ Sinon zapewnia większość tych samych funkcji po wyjęciu z pudełka.
To działało wspaniale; wielkie dzięki! –
Nie ma problemu, przyjemność;) – ggozad
Wszelkie pomysły na sposób Sinon? – lucke84