jest.mock express-jwt中间件行为,用于受保护的路由

时间:2018-11-21 06:26:22

标签: typescript express auth0 express-jwt

所以现在我有这样的东西(不起作用)

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

添加它

我仍然继续收到401s,看来这里没有使用该模拟程序。

1 个答案:

答案 0 :(得分:0)

通过将jest.mock()beforeAll()中移出,解决了我遇到的类似问题。看来jest.mock()托管在其范围的顶部,而不是文件本身。因此,由于您将应用程序导入文件的顶部(然后需要中间件),因此中间件仍然是原始文件而不是模拟文件,而模拟文件则卡在了beforeAll()函数中。

我是开玩笑的新手,所以我可能误会了一些重要的东西...