You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS Jest单元测试中如何模拟Express.Multer.File类型文件对象

Nest.js + Jest单元测试模拟Express.Multer.File文件对象方案

近期开始使用Nest.js及其内置的单元测试库Jest做开发,在实现CSV文件上传及后续文件处理功能时,计划为对应接口编写单元测试,这一步需要模拟CSV文件对象,最初写的模拟代码如下:

const mockFile = {
  fieldname: 'file',
  originalname: 'TradeHistory.csv',
  encoding: '7bit',
  mimetype: 'text/csv',
  buffer: Buffer.from(__dirname + '/../../TradeHistory.csv', 'utf8'),
  size: 51828,
}

但很快遇到了如下问题:

  • 文件上传功能使用了@UseInterceptors()和@UploadedFile()装饰器
  • 上述装饰器接收的参数类型为 Express.Multer.File
  • 最初编写的普通模拟object类型无法作为合法参数传入

后续查找将模拟文件转换为Express.Multer.File类型的方法,发现解决方案十分简单直接:使用类型断言关键字as,将模拟文件对象断言为Express.Multer.File类型即可,修正后的代码如下:

const mockFile = {
  fieldname: 'file',
  originalname: 'TradeHistory.csv',
  encoding: '7bit',
  mimetype: 'text/csv',
  buffer: Buffer.from(__dirname + '/../../TradeHistory.csv', 'utf8'),
  size: 51828,
} as Express.Multer.File

这是目前可直接生效的最简方案,可能还存在其他实现方式,欢迎交流提供更多思路。

内容的提问来源于stack exchange,提问作者MSadiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:36:15