用笑话覆盖回调函数内部的函数

时间:2019-02-22 01:37:05

标签: node.js unit-testing jestjs

我正在开发Nodejs应用程序。我正在使用静音器上传文件。当我开玩笑地编写单元测试时,我看到功能涵盖了测试范围。它表明我发现了线。问题在于那些函数是构造函数选项中的辅助函数

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);
  }
});

我想知道如何测试filterFilenamecheckFileType函数以及其中的语句。顺便说一下,这些功能是私有功能。我不想导出它们。

1 个答案:

答案 0 :(得分:0)

测试此代码的一种方法是像这样模拟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)
})