请求rest api并返回mocha测试的响应值

时间:2018-02-09 13:02:31

标签: node.js rest mocha supertest

在流星应用程序中,我想测试一些休息功能,因此我需要进行一些身份验证。

在我的测试用例中,我想从函数中返回一些auth数据:

const supertest = require('supertest');

function loginUser(auth) {
  return function(done) {
    request
      .post('/users/login')
      .send({
        username: 'user'
        password: '123',
      })
      .expect(200)
      .end(onResponse);

    function onResponse(err, res) {
      auth.token = res.body.token;
      return done();
    }
  };
}

在这个测试中:

it('auth test by helper function', function () {
  let auth = {};
  auth = loginUser(auth)(done);
  //access auth settings here like:
  //auth.token
});
永远不会调用

onResponseauth总是{}

我使用supertest请求3.0.0和mocha 4.1.0作为testrunner(其余的api很简单:json-routes)

更新

似乎返回'功能(已完成)'永远不会被称为......

好的我修复了auth = loginUser(auth)(done);

的来电

现在呼叫已完成,但呼叫

auth未定义

1 个答案:

答案 0 :(得分:1)

您的function loginUser(auth)会返回另一个功能。所以你应该像这样调用那个函数:

it('auth test by helper function', function (done) { // pass done so mocha knows it needs to wait for the response ...
  let auth = {};
  loginUser(auth)(function() {
     //access auth settings here like:
     //auth.token
     done();
  });       
});