ユカシカド エンジニアブログ

体の栄養状態を把握する検査サービス VitaNoteを開発するエンジニアのブログ

Mocha + Chai + NockでHTTPモックを使ったテスト

今週はずっとNode.jsアプリのテストを書いてばっかりです。 Node.jsにはnockという便利なHTTPモックのモジュールがあり、使ってみたのメモ。

var request = require('request');
var mocha = require('mocha');
var expect = request('chai').expect();

describe('Nock!Nock!Nock!', function () {
  var mockURL = 'http://awesomeapi/';
  var options = function(params){
    return {
      uri: mockURL,
      method: 'PUT',
      headers: { 'Content-Type': 'application/json'},
      body: params,
      json: true
    }
  };
  beforeEach(function () {
    nock(mockURL)
      .put('/', {message: 'hello'}).reply(200, 'hello')
      .put('/', {message: 'world'}).reply(200, 'world');
  });

  it('returns hello', function () {
    request(options({message: 'hello'}), function (err, res, body) {
      expect(body).to.eq('hello');
    });
  });

  it('returns world', function () {
    request(options({message: 'world'}), function (err, res, body) {
      expect(body).to.eq('world');
    });
  });   
});

すごく簡単に書けますね。他にも機能がたくさんあり複雑な処理も書けそうです。 公式README大事。

https://github.com/pgte/nock