所以现在我有这样的东西(不起作用)
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,看来这里没有使用该模拟程序。
答案 0 :(得分:0)
通过将jest.mock()
从beforeAll()
中移出,解决了我遇到的类似问题。看来jest.mock()
托管在其范围的顶部,而不是文件本身。因此,由于您将应用程序导入文件的顶部(然后需要中间件),因此中间件仍然是原始文件而不是模拟文件,而模拟文件则卡在了beforeAll()
函数中。
我是开玩笑的新手,所以我可能误会了一些重要的东西...