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の名前が雑なのは自覚している。仕事ではやってはいけない。