node.js - 用玩笑覆盖回调函数内的函数
问题描述
我正在开发一个 Nodejs 应用程序。我正在使用静音来上传文件。当我用 jest 编写单元测试时,我看到测试覆盖率中涵盖的功能。它表明我已经发现了线条。问题是这些函数是构造函数选项中的辅助函数
const storage = multer.diskStorage({
destination: "uploads/",
filename: (req, file, cb) => {
filterFilename(req, file, cb);
}
});
const upload = multer({
storage: storage,
limits: {
files: 2,
fileSize: 5 * 1024 * 1024
},
fileFilter: (req, file, cb) => {
checkFileType(file, cb);
}
});
我想知道如何测试filterFilename
和checkFileType
运行以及其中的语句。顺便说一下,这些函数是私有函数。我不想导出它们。
解决方案
测试此代码的一种方法是multer
像这样模拟:
var multer = require('multer')
jest.mock('multer', () => jest.fn())
test('basic', () => {
runTheCodeInYourSnippet();
expect(multer).toHaveBeenCalled()
const {
storage,
fileFilter
} = multer.mock.calls[0][0]
// test storage.filename(req, file, cb)
// and fileFilter(req, file, cb)
})
推荐阅读
- css - 限制标题背景视频的高度?
- android - 在 ConstraintLayout 上设置 app:layout_constraintTop_toBottomOf
- android - 如何使用像 22571267 这样的 uiautomator 在真实的 android 设备中验证 xpath
- php - count():参数必须是Yii2中实现Countable的数组或对象
- ios - 双击ios时禁用avplayer中的缩放效果
- css - sass 编译错误说 $color: null is not a color 即使我声明了颜色
- mysql - 如何从 sequelize 中的多级关联中获取结果?
- c# - 使用 windowHandle 显示 WPFHidden 窗口
- angular - 使用 @agm/core 从 angular6 中的服务器获取纬度和经度后加载谷歌地图
- java - 提高 JAX-RS 应用程序的性能