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