我试图像这样模拟fs
模块:
jest.mock('fs');
正如这篇文章中所见-Mock fs function with jest
我应该能够将模块内部的功能视为jest.fn()
并使用-例如fs.existsSync.mockReturnValue(false);
。
但是这似乎不起作用,打字稿给了我很多错误。
我要做的只是断言一些mkdirSync
之类的函数,它们已经被调用了time或带有一些参数,而我似乎正在遇到此错误-
'The "path" argument must be one of type string, Buffer, or URL. Received type undefined'
我试图将fs.ts
添加到__mocks__
文件夹中并在其中进行模拟-但这并不幸运。
我要测试的文件是一个类,并且导入了fs。我正在beforeEach
开玩笑的方法中创建一个新的类实例。
因此,一般而言,我不太在意创建文件或查看文件是否存在,我希望有一个模拟的返回值或实现,而只需检查fs
模块功能使用了哪些参数叫。
答案 0 :(得分:0)
运行jest并以任何方式模拟文件系统都会导致冲突,因为jest也在使用fs模块来处理运行。
我发现可以解决此问题的唯一解决方案:
export class SomeClass {
fs: typeof fs;
constructor() { this.fs = fs }
///code
}
在测试中像这样模拟fs方法:
someClass.fs = {
mkdirSync: jest.fn()
} as any;
断言:
expect(someClass.fs.mkdirSync).toBeCalledWith('parameters');