受保护路由的 jest.mock express-jwt 中间件行为
Posted
技术标签:
【中文标题】受保护路由的 jest.mock express-jwt 中间件行为【英文标题】:jest.mock express-jwt middleware behavior for protected routes 【发布时间】: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,看起来模拟在这里没有得到使用。
【问题讨论】:
【参考方案1】:我通过将jest.mock()
移出beforeAll()
解决了我遇到的类似问题。 jest.mock()
似乎托管在其 范围 的顶部,而不是文件本身。因此,由于您在文件顶部导入您的应用程序(然后需要您的中间件),中间件仍然是您的原始而不是模拟,它卡在 beforeAll()
函数中。
我是新手,所以我可能会误解一些重要的事情......
【讨论】:
以上是关于受保护路由的 jest.mock express-jwt 中间件行为的主要内容,如果未能解决你的问题,请参考以下文章
jest中的mock,jest.fn()jest.spyOn()jest.mock()
jest中的mock,jest.fn()jest.spyOn()jest.mock()
jest中的mock,jest.fn()jest.spyOn()jest.mock()