Edited at

request を streamで利用し、テストする

More than 3 years have passed since last update.

Lab と(streamな) request の組み合わせで、サーバにPostリクエストを送り、レスポンスを検証するテストをthrough2を使って書いてみた。

Through2じゃなくてStream APIをそのまま使った方がいい気がするがひとまずこのままで。


production

api.login = function () {

return request.post({
json: true,
uri: 'https://api.example.com/user',
form: {
username: config.username,
password: config.password
}
});
};



test

  lab.experiment('Post', function () {

lab.test('to api', function (done) {
var buffer = '';
api.login().pipe(through2.obj(function (chunk, enc, callback) {
this.push(chunk);
callback();
})).on('data', function (data) {
buffer += (data || '');
}).on('end', function () {
var responseBody = JSON.parse(buffer);
username = responseBody.username;
code.expect(responseBody.user.name).match(/^username$/);
done();
});
});
});

※experimentやtestの名前が雑なのは自覚している。仕事ではやってはいけない。