1
在我的nodejs服务器中,我想嘲笑fs用于我的Mocha测试。 我最终使用嘲笑,但我真的误解了一个概念。使用嘲讽模拟fs模块
在我的测试(我用的打字稿以及):
// mock for fs
var fsMock = {
readdir: (path: string) => { return { err: undefined, files: [] } },
writeFile: (path: string, content: string, encoding: string) => { return { err: undefined } },
readFileSync: (path: string, encoding: string) => { return "lol" }
};
Mockery.registerMock('fs', fsMock);
beforeEach((done) => {
Mockery.enable({
useCleanCache: true,
warnOnReplace: false,
warnOnUnregistered: false
});
}
afterEach(() => {
Mockery.disable();
});
我的测试过程中
但不幸的是,我的模块还用老FS。我明白为什么不工作。事实上,在我的测试中,我:
- 导入我的模块在文件
- 的顶部,我导入模块,我模块将导入其依赖,为FS。
- 因为在这个时候嘲讽尚未被启用(我们仍然不运行测试...),我的模块中导入的FS是我测试的
- 我执行之前的原始一个
- 我安装我的嘲弄测试,那失败,因为仍然是原来的FS使用...
现在的问题是:我如何告诉我的模块重新要求其依赖使用我的模拟版本的FS?而在全球范围内,我如何轻松地嘲笑fs?
谢谢。
诀窍是在设置模拟之后要求测试的模块。 –
另外,我认为你必须首先启用嘲笑,然后你注册一个模拟 –
我使用导入,这只能用在文件的顶部:( – Adavo