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"}');
});
});
});
});