今更感漂うのだけど…… FakeServerを使ってAjax関連のテストを書く機会があまりないので、書いておかないと忘れてしまうのでメモを。
// jQuery + Mocha + expect.js + Sinon.JS
suite('API', function() {
var server;
beforeEach(function() {
// 疑似サーバの生成
server = sinon.fakeServer.create();
});
afterEach(function() {
// スタブのXHRとかを戻す
server.restore();
server = null;
});
it('データが返ってくること', function(done) {
var res = 200,
head = {'Content-Type': 'application/json'},
body = JSON.stringify({
data: 'data'
});
// レスポンスの指定
server.respondWith('POST', '/path/to/api', [
res, head, body
]);
// リクエスト
$.post('/path/to/api', function(data, textStatus, jqXHR) {
expect(JSON.parse(data).data).to.be('data');
done();
});
// 疑似サーバからレスポンスを返す
server.respond();
});
});
確かこんな感じ。