запросить остальные API и вернуть значения ответа для теста мокко

Внутри приложения метеора я хочу протестировать некоторые остальные функции, поэтому мне нужно выполнить некоторую аутентификацию.

В моем тестовом примере я хочу вернуть некоторые данные аутентификации из функции:

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 всегда {}

Я использую супертест для запросов 3.0.0 и мокко 4.1.0 в качестве тестраннера (остальное API просто: json-маршруты)

ОБНОВЛЕНИЕ

Кажется, что функция return (done) никогда не вызывается...

Хорошо, я исправил вызов auth = loginUser(auth)(done);

Теперь вызов выполнен, но auth не определено после вызова


person Gobliins    schedule 09.02.2018    source источник


Ответы (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();
  });       
});
person Daniel Conde Marin    schedule 09.02.2018
comment
я изменил свой код, чтобы вызвать функцию, как в вашем ответе. Вызов выполняется, но я думаю, что мокко не ждет. auth равно {}, когда я хочу получить доступ к токену. - person Gobliins; 09.02.2018