[英]Mock fs module using mockery
在我的nodejs服務器中,我想用Mocha模擬fs進行測試。 我最終使用了Mockery,但我真的誤解了一個概念。
在我的測試中(我也使用Typescript):
// 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?
謝謝。
最后,在測試和測試之后,我最終沒有使用mockery
,而是使用SinonJS
。 它為模擬fs
提供了一種非常簡單輕松的方法,例如:
import * as Fs from "fs"
import * as Sinon from "sinon"
// ..
// At a place inside a test where the mock is needed
Sinon.stub(Fs, "readdir").callsFake(
(path: string, callback: Function) => { callback(null, ['toto']) }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.