LoginSignup
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-04-28

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3