首页 > 解决方案 > 如何使用 SuperTest 进行单元测试以使用 multer 发布文件

问题描述

现在,我有一个表单,它使用 multer 和 aws-S3 提交图像“文件”数组,并接收以下类型的对象以在 POST 控制器中进行处理:

files: [
{
  fieldname: 'uploaded',
  originalname: 'test.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  size: 1407923,
  bucket: 'mybucket',
  key: '2343.jpg',
  acl: 'public-read',
  contentType: 'application/octet-stream',
  contentDisposition: null,
  storageClass: 'STANDARD',
  serverSideEncryption: null,
  metadata: null,
  location: 'https://mybucket.s3.us-east-2.amazonaws.com/12144etest.jpg',
  etag: '"7503d8c8f9cdca"',
  versionId: undefined
}

]

如何使用 supertest 发布这样的模拟对象?现在我有这个,但我收到一个 500 内部服务器错误,很明显我做错了什么:

let res = await api
  .post("/login")
  .send({"username" : "user", "password": "pass"})

await supertest(app)
  .post('/upload')
  .attach('files', 'test.jpg')
  .set('cookie', res.headers['set-cookie'])
 

标签: node.jsexpressmultersupertestmulter-s3

解决方案


await supertest(app)
  .post('/upload')
  .attach('files', `${__dirname}/test.jpg`) // added __dirname here.

推荐阅读