使用 Jest 模拟 NestJs 单元测试中的 File 对象

MSa*_*diq 6 unit-testing file-upload type-assertion multer nestjs

我最近开始使用 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,
}
Run Code Online (Sandbox Code Playgroud)

我很快就遇到了这些问题;

  • 对于文件上传,我使用 @UseInterceptors() 和 @UploadedFile()
  • 它采用文件类型:Express.Multer.File
  • 它不会接受我的模拟文件对象类型作为参数

因此,我寻找一种将模拟文件转换为Express.Multer.File类型的方法 ,过了一段时间,对我有用的方法变得非常简单和直接,就像使用类型断言作为关键字来转换文件对象Express.Multer一样。文件

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
Run Code Online (Sandbox Code Playgroud)

可能存在其他方式,我愿意接受建议