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

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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