Sinon.JSを使ってXMLHttpRequestをテスト
Sinon.JSのfakeServerを使えばレスポンスをエミュレートする事も出来るらしいのでやってみた
(function() {
var server = sinon.fakeServer.create();
server.respondWith(
"GET",
"/test",
[200, { "Content-Type": "text/plain" }, "hoge"]
);
var spy = sinon.spy();
getEvents(spy);
server.respond();
/*
var responses = server.responses;
var response = server.responses[0].response;
*/
sinon.assert.calledWith(spy, "hoge");
server.restore();
})();
function getEvents(cb) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/test", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var data = xhr.responseText;
cb(data);
}
};
xhr.send(null);
}
本当はfakeServerのcreateとrestoreはUnit系のsetUpとかtearDownを使ってやるのが良いらしい。
XMLHttpRequestのレスポンスをエミュレートさせる事が出来るので、それを使えばテストしたりなども出来るっていう感じかと