最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何用超级测验模拟multer?

运维笔记admin12浏览0评论

如何用超级测验模拟multer?

如何用超级测验模拟multer?

我正在编写文件上传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({...});

然后像这样在我的路线中使用它

// 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();
            };
          },
        };
      },
);

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论