Sinon.JSを使ってXMLHttpRequestをテスト

2012-09-29T00:00:00+00:00 JavaScript

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のレスポンスをエミュレートさせる事が出来るので、それを使えばテストしたりなども出来るっていう感じかと

Chrome Extension開発を勉強してみる (20) - chrome.experimental.identity - Chrome Extension開発を勉強してみる (19) - chrome.experimental.socket -