请求 rest api 和 return 摩卡测试的响应值

request rest api and return response values for a mocha test

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

在我的测试用例中,我想 return 来自函数的一些授权数据:

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
});

onResponse 永远不会被调用,auth 总是 {}

我正在使用 supertest 请求 3.0.0 和 mocha 4.1.0 作为测试运行器(其余 api 是 simple:json-routes)

更新

似乎 return 'function(done)' 从未被调用过...

好的,我将呼叫固定到 auth = loginUser(auth)(done);

现在调用已完成,但调用后 auth 未定义

你的function loginUser(auth)returns另一个函数。所以你应该像这样调用那个函数:

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();
  });       
});