node.js で動くWebアプリを作り、mocha などでユニットテストを書きたいというシチューエーションになりました。

しかし、そのWebアプリは request によって外部コンテンツを
参照しているため、なかなかテストが書きにくいです。

そこで、探し出してきた便利ライブラリが nock です。

https://github.com/pgte/nock

このライブラリを使うと、特定のHTTPリクエストを mock することが
できるようです。
下のようなテストコードが、パスします。

var request = require('request')
    , nock = require('nock')
    , assert = require('assert');

describe('http request', function() {
  describe('get request', function() {
    it('should return {"hello": "world"}', function() {
      // mocking http request
      nock('http://www.example.com')
        .get('/data')
        .reply(200, {
          hello: 'world'
        }, {
          'Content-Type': 'application/json'
        }); 

      // request
      request('http://www.example.com/data', function(err, response, body) {
        assert.equal(err, null);
        assert.equal(response.statusCode, 200);
        assert.equal(body, '{"hello":"world"}');
      }); 
    }); 
  }); 
});

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>