Поведение промежуточного программного обеспечения jest.mock express-jwt для защищенных маршрутов - PullRequest
0 голосов
/ 21 ноября 2018

Так что сейчас у меня есть что-то вроде этого (что не работает)

import app from '../src/app';

beforeAll(() =>
  jest.mock('../src/middleware/auth', () => (req: Request, res: Response, next: NextFunction) => {
    req.user = {};
    return next();
  });

afterAll(() =>
  jest.unmock('../src/middleware/auth'));

, а затем мой тест как обычно:

describe('POST /v1/protected-route', () => {
  it('should return 200 OK', async () => {
    await request(app)
      .get('/v1/protected-route')
...

в ../src/app Яимпортируя ./middleware/auth и добавляя его вот так app.use(auth())

Я все еще продолжаю получать 401-е, и похоже, что издевательство здесь не используется.

1 Ответ

0 голосов
/ 26 февраля 2019

Я решил похожую проблему, переместив jest.mock() из beforeAll().Похоже, что jest.mock() размещается в верхней части scope , а не в самом файле.Таким образом, поскольку вы импортируете свое приложение вверху файла (для этого требуется промежуточное программное обеспечение), промежуточное программное обеспечение остается вашим оригиналом, а не имитатором, который застревает в функции beforeAll().

I'mновичок в шутке, поэтому я могу неправильно понять что-то важное ...

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