1
私のnodejsサーバでは、私はモカとの私のテストのためにfsを模擬したいと思います。 私はMockeryを使いますが、私は本当に概念を誤解しています。私のテストでモックを使用したモック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を使用します。私はなぜ働いていないのか理解していた。確かに、私のテストで、I:
- は、私はモジュールをインポートすると、私のモジュールはFSとして、その依存関係をインポートします
- ファイルの先頭に私のモジュールをインポートします。まだ有効になっていないこの時間嘲笑のよう
- (我々はまだ...テストを実行していない)、私のモジュールにインポートfsは私のテスト
- 私は実行する前に、元の1つの
- Iセットアップ嘲笑である私テストは失敗しました。なぜなら、元のfsが使用されているからです...
ここで、問題は次のとおりです。私のモックバージョンのfsを使用するためにモジュールに依存関係を再要求する方法を教えてください。そしてもっと世界的に、どうすれば簡単にfockを模倣できますか?
ありがとうございました。
トリックは、モックを設定した後にテストするモジュールを要求することです。 –
また、私はあなたがモックを登録する前にMockeryを有効にしなければならないと思います –
私はインポートを使用します。これはファイルの先頭でのみ使用できます:( – Adavo