【发布时间】:2021-12-28 00:21:28
【问题描述】:
我正在尝试使用jest 和supertest 测试express 控制器。我有一个使用multer 处理文件的中间件。我可以在全球范围内模拟 multer,但我无法根据 it/test 案例模拟它。
// saveImage.controller.ts
jest.mock('multer', () => {
const m = () => ({
single: () => (req: Request, res: Response, next: NextFunction) => {
req.body = { type: 'screenshots' };
req.file = mockFile;
return next();
},
});
m.memoryStorage = () => jest.fn();
return m;
});
describe('POST /api/v1/garment/image/upload', () => {
it('should return 201', async () => {
await request(app)
.post('/api/v1/garment/image/upload')
.send({ file: 'myImage' }) // this is overwritten by the mock
.expect(201); // passes
});
it('should return 400', async () => {
await request(app)
.post('/api/v1/garment/image/upload')
.send() // this is overwritten by the mock
.expect(400); // fails
});
});
第一个测试通过,但我无法更改模拟以使第二个测试通过。
如何在我的第二个it 案例中更改模拟?
【问题讨论】:
标签: node.js express unit-testing jestjs supertest