Node.js 模拟';财政司司长';开玩笑的模组

Node.js 模拟';财政司司长';开玩笑的模组,node.js,typescript,jestjs,fs,Node.js,Typescript,Jestjs,Fs,我试图模拟fs模块,如下所示: jest.mock('fs') 从这篇文章中可以看出—— 我应该能够将模块内的函数视为jest.fn(),并使用-fs.existsSync.mockReturnValue(false)例如 然而,这似乎不起作用,typescript给了我一大堆错误。 我所要做的就是断言像mkdirSync这样的两个函数已经被多次调用或使用了一些参数,我似乎遇到了这个错误- “path”参数必须是字符串、缓冲区或URL类型之一。接收类型未定义“ 我试图将fs.ts添加到\uuuu

我试图模拟
fs
模块,如下所示:

jest.mock('fs')

从这篇文章中可以看出——

我应该能够将模块内的函数视为
jest.fn()
,并使用-
fs.existsSync.mockReturnValue(false)例如

然而,这似乎不起作用,typescript给了我一大堆错误。 我所要做的就是断言像
mkdirSync
这样的两个函数已经被多次调用或使用了一些参数,我似乎遇到了这个错误-

“path”参数必须是字符串、缓冲区或URL类型之一。接收类型未定义“

我试图将
fs.ts
添加到
\uuuumocks\uuuuuuuuu
文件夹中,并在那里对其进行模拟,但这并不幸运

我试图测试的文件是一个类,它导入fs。我正在
beforeach
jest方法中创建一个新的类实例


所以一般来说,我并不想创建一个文件或者看看它是否存在,我希望有一个模拟的返回值或实现,只需检查调用了
fs
模块函数的参数就可以了。

运行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');

似乎运行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');