sinon.js: fake.rejects - тестировать с помощью namedWith - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть функция, которая ищет пользователя в базе данных - в этом случае я хочу «отклонить», так как пользователь не найден.

Если пользователь не найден, вызывается обратный вызовс ошибкой отклонения и вторым параметром (false)

return Login
  .findOne({
    where: {
      id: decoded.loginId,
      expireDate: {
        $gt: now,
      },
    },
  })
  .then(login => done(null, !!login))
  .catch(error => done(error, false));

Я подделываю функцию findOne для отклонения:

Login.findOne = sinon.fake.rejects(false);

Как проверить, правильно ли теперь вызывается мой обратный вызов?

// Inside validateToken the above code is implemented
const done = sinon.fake();
await validateToken({
  tokenInvalidate: moment().add(1, 'minute').toDate(),
  loginId: 1,
}, { server }, done);
done.should.be.calledWith(new Error(false), false);

Я пробовал много параметров, но не похоже, что я могу узнать, что мне следует использовать в качестве параметра здесь.Может я неправильно понял документацию?Я не знаю ... Вот фактический результат:

 AssertionError: expected fake to have been called with arguments Error: false, false
Error: false
false

Модули:

"sinon": "^6.2.0",
"sinon-chai": "^3.2.0",

Заранее спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Выяснил проблему ...

Пришлось использовать sinon.fake.rejects(errorInstance) вместо false или встроенный экземпляр ошибки.

При проверке мне пришлось использовать тот же экземпляр:

const error = new Error();
Login.findOne = sinon.fake.rejects(error);
done.should.be.calledWith(error, false);
...