gpt4 book ai didi

node.js - 如何用 supertest 模拟 multer?

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:46 25 4
gpt4 key购买 nike

我正在编写文件上传 API,在模拟 multer 时遇到了一些麻烦。我正在尝试使用 supertest 测试我的端点。

it('load image', async () => {
await app
.post(`${apiImage}`)
.set('Authorization', 'abc123')
.attach('avatar', `${__dirname}/test.jpg`);
.expect(200);
});

上传按预期工作。但是每次我运行测试时,都会创建新文件。那么,如何模拟 multer 而不是每次都创建新文件?

最佳答案

我有一个中间件助手来像这样包装 multer

// middleware/index.js

const multer = require('multer');
exports.multerUpload = () => multer({...});

然后像这样在我的 route 使用它

// routes.js

const { multerUpload } = require('path/to/middlewares');

app.post('/upload', multerUpload().any());

然后,在我的测试中,我可以停止 multerUpload

// test.js

const middlewares = require('path/to/middlewares');
sinon.stub(middlewares, 'multerUpload').callsFake(
() => {
return {
any() {
return (req, res, next) => {
// You can do whatever you like to the request body here e.g
req.body = { title: req.query.title };
req.files = [{ location: 'sample.url', key: 'sample.key' }];
return next();
};
},
};
},
);

关于node.js - 如何用 supertest 模拟 multer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47040761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com