Javascript Jest mock pdfmake和fs.createWriteStream

Javascript Jest mock pdfmake和fs.createWriteStream,javascript,node.js,unit-testing,testing,jestjs,Javascript,Node.js,Unit Testing,Testing,Jestjs,一般来说,我对玩笑和单元测试非常陌生。我正在尝试为一段代码生成一个测试,该代码基本上使用了pdfmake和fs.createWriteStream来创建和写入pdf文件 当我在阅读教程时,我有点困惑,因为我不习惯这些信息,我试着把一些东西放在一起。一个fs.js模块,用于尝试模拟writestream。关于pdfmake,我不是很确定——我是否可以跳过它,假设我有一个目标文件,因此只模拟流的创建 describe('createWriteStream', () => { const M

一般来说,我对玩笑和单元测试非常陌生。我正在尝试为一段代码生成一个测试,该代码基本上使用了pdfmake和fs.createWriteStream来创建和写入pdf文件

当我在阅读教程时,我有点困惑,因为我不习惯这些信息,我试着把一些东西放在一起。一个fs.js模块,用于尝试模拟writestream。关于pdfmake,我不是很确定——我是否可以跳过它,假设我有一个目标文件,因此只模拟流的创建

describe('createWriteStream', () => {
  const MOCK_FILE_INFO = {
    '/path/to/file1.pdf': 'console.log("file1 pdf contents");'
  };
})
类似上面的东西

然后就让fs.createWriteStream获得一个成功的结果

原始代码如下所示:

let pdfDoc = new pdfPrinter({
  Roboto: {
    normal: new Buffer(require('pdfmake/build/vfs_fonts.js').pdfMake.vfs['Roboto-Regular.ttf'], 'base64')
  }
}).createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream(path));
pdfDoc.end();

我知道没有太多的信息,但我想如果有人非常了解单元测试,他可能知道如何最好地处理这个问题。谢谢

路径来自哪里?我将避免模拟文件系统交互,这种行为不难测试。结构化代码是这样一种方式,您可以在测试期间控制
path
。一旦您可以在测试中控制
路径
,您就可以验证文件是否正在生成。对于难以单独测试的复杂交互,如数据库访问或对外部系统的请求,我会保留模拟。谢谢Jake感谢您的回复!那么可以从path开始,看看jest文档阅读带我去哪里:)path从哪里来?我将避免模拟文件系统交互,这种行为不难测试。结构化代码是这样一种方式,您可以在测试期间控制
path
。一旦您可以在测试中控制
路径
,您就可以验证文件是否正在生成。对于难以单独测试的复杂交互,如数据库访问或对外部系统的请求,我会保留模拟。谢谢Jake感谢您的回复!然后可以从path开始,看看jest文档阅读会把我带到哪里:)