我正在为图形模块编写一些测试,作为这些测试的一部分,我需要一种方法来模拟fs
模块,这样我就可以断言数据已经存在写入我的假文件系统,并允许我的假文件系统提供假数据,以测试从文件系统中读取。
我知道jest支持"手动模拟"在此处创建静态模拟对象作为代码旁边的文件。就个人而言,如果可能的话,我宁愿避免这种情况,而是使用jest.fn
和/或jest.doMock
在我的测试文件中定义我的模拟内联。
看the documentation,我觉得这应该是可能的,我觉得我大约有75%的人声称我的模拟fs.createWriteStream
被一个参数调用了。我似乎无法弄清楚如何断言数据已写入我的模拟fs
。
我也知道npm上有各种mock-fs
或类似的模块。如果可能的话,我宁愿避免使用这些,并使用jest提供的工具完全解决这个问题。
到目前为止,这是我的测试代码:
const fs = require('fs');
const pureimage = require('pureimage');
jest.mock('fs', () => ({
createWriteStream: jest.fn((file_name) => {
return file_name;
})
}));
describe('PNG image', () => {
it('can be encoded to a stream', () => {
const PImage = pureimage.make(200, 200);
const context = PImage.getContext('2d');
context.fillStyle = 'rgba(255,0,0, 0.5)';
context.fillRect(0, 0, 100, 100);
expect(pureimage.encodePNGToStream(PImage, fs.createWriteStream('myimage.png'))).resolves;
});
});
可在此处找到完整项目:http://github.com/robertmain/node-pureimage
答案 0 :(得分:-1)
我最终传递了一个直通流并在其上做出了断言