【问题标题】:jest.mock express-jwt middleware behavior for protected routes受保护路由的 jest.mock express-jwt 中间件行为
【发布时间】:2019-04-23 16:26:18
【问题描述】:

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

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,看起来模拟在这里没有得到使用。

【问题讨论】:

    标签: typescript express auth0 express-jwt


    【解决方案1】:

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

    我是新手,所以我可能会误解一些重要的事情......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-25
      • 2015-10-08
      • 2019-07-06
      • 2021-03-17
      • 2021-07-19
      • 2021-07-28
      • 2020-03-25
      • 2017-11-15
      相关资源
      最近更新 更多