miałem żadnych problemów sortowaniu szyderczy warunek sukcesu, ale nie wydaje się pojąć, jak wyśmiewać awaria/warunki limitu czasu podczas korzystania sinon i Qunit przetestować i funkcji ajax:Jak wyśmiać odpowiedź "timeout" lub "failure" za pomocą Sinon/Qunit?
Mój set up to:
$(document).ready(function() {
module("myTests", {
setup: function() {
xhr = sinon.sandbox.useFakeXMLHttpRequest();
xhr.requests = [];
xhr.onCreate = function (request) {
xhr.requests.push(request);
};
myObj = new MyObj("#elemSelector");
},
teardown: function() {
myObj.destroy();
xhr.restore();
}
});
i moja próba sprawa sukces, działa szczęśliwie i odbierania/przejazdem odebranych danych do metody sukcesu jest to:
test("The data fetch method reacts correctly to receiving data", function() {
sinon.spy(MyObject.prototype, "ajaxSuccess");
MyObject.prototype.fetchData();
//check a call got heard
equal(1, xhr.requests.length);
//return a success method for that obj
xhr.requests[0].respond(200, { "Content-Type": "application/json" },
'[{ "responseData": "some test data" }]');
//check the correct success method was called
ok(MyObj.prototype.ajaxSuccess.calledOnce);
MyObj.prototype.ajaxSuccess.restore();
});
jednak nie mogę pracować poza to, co powinno być wprowadzenie zamiast to:
xhr.requests[0].respond(200, { "Content-Type": "application/json" },
'[{ "responseData": "some test data" }]');
, aby mój moduł obsługi wywołania ajax "usłyszeć" błąd lub metodę Timeout? Mogłem tylko spróbować:
xhr.requests[0].respond(408);
Ale to nie działa.
Co robię źle lub co źle zrozumiałem? Cała pomoc doceniona :)
Limit czasu jest brakiem odpowiedzi w danym czasie, więc nie można zwrócić limitu czasu. –
Miałem nadzieję, że sinon może przezwyciężyć to i dać ustandaryzowany interfejs dla wszystkich rodzajów reakcji. Jeśli nie mogę "przywrócić" limitu czasu przy użyciu sinona - to jak mam go sfałszować? –
Nie znam sinona, więc może jest coś konkretnego, ale zwykle ustawiasz limit czasu na mówienie 1ms i używasz oczekiwania na serwerze lub stronie serwera próbnego. –