node.js で動くWebアプリを作り、mocha などでユニットテストを書きたいというシチューエーションになりました。
しかし、そのWebアプリは request によって外部コンテンツを
参照しているため、なかなかテストが書きにくいです。
そこで、探し出してきた便利ライブラリが 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"}'); }); }); }); });