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