Как издеваться над Express JWT, если не работает? - PullRequest
1 голос
/ 04 апреля 2019

Я использую Express и Express-JWT.

В экземпляре Express () я использую:

const api = express()
api.use(jwt({
 // my options
}))

Для проверки этого в тестах я использую файл mocks\express-jwt\index.jsсодержащий:

const jwt = jest.fn().mockImplementation(options => (req, res, next) => {
  // set dummy req.user and call
  next()
})

module exports = jwt

Все это прекрасно работает.Теперь я хочу пропустить JWT для корневой конечной точки, поэтому я изменил использование jwt на:

api.use(jwt({
  // my options
}).unless({path:['/']}))

В своем макете я добавил:

jwt.unless = jest.fn().mockImplementation(options => (req, res, next) => {
  next()
})

Однако тесты теперь всегдапотерпите неудачу с function unless is not defined.

Кто-нибудь знает, как смоделировать это unless поведение?

1 Ответ

0 голосов
/ 05 апреля 2019

unless используется как свойство в результате вызова jwt.

Так что, чтобы смоделировать его, добавьте свой unless макет в качестве свойства функциивернул ваш jwt макет:

const jwt = jest.fn().mockImplementation(options => {
  const func = (req, res, next) => {
    // set dummy req.user and call
    next();
  };
  func.unless = jest.fn().mockImplementation(options => (req, res, next) => {
    next();
  });
  return func;
});

module.exports = jwt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...