成功条件のモックを整理するのに問題はありませんでしたが、SinonとQunitを使用してテストと ajax 関数を使用するときに、失敗/タイムアウト条件をモックする方法を理解できないようです。
私のセットアップはこれです:
$(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();
}
});
});
そして、私の成功例のテストは、うまく実行され、受信したデータを成功メソッドに受信/通過させるのは次のとおりです。
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();
}
);
ただし、これの代わりに何を入れるべきかわかりません。
xhr.requests[0].respond(200, { "Content-Type": "application/json" },
'[{ "responseData": "some test data" }]');
私のajaxコールハンドラーhear
を失敗またはタイムアウトメソッドにするには? 私が試してみようと思った唯一のことはこれでした:
xhr.requests[0].respond(408);
しかし、うまくいきません。
私は何を間違っていますか、または何を誤解していますか? すべての助けに感謝します:)