web-dev-qa-db-ja.com

Jestで単一モジュールをリセットする

jest.resetModules()は、すべてのモジュールの必要なキャッシュをクリアしますが、単一のモジュールだけでそれをクリアする方法はありますか? Jestがバイパスしているように見えるため、_require.cache_を使用できません。

私はNodeステートフルなモジュールをテストしています(つまり、requireへの複数の呼び出しが同じインスタンスを返すという事実に依存しています)。私のテストでは、さまざまなシナリオをテストするためのモジュールの状態jest.resetModules()は機能しますが、リセットする必要のない他のモックモジュールをre -requireする必要があります。

24
Tamlyn

コメントで言及されたPRはマージされました。 v24.0.0-alpha.9以降、これを行うために jest.isolateModules を使用できるようになりました。

特定のモジュールのみをリセットする場合、jest.isolateModulesのコールバックでそれを要求する必要があるとします。

let myModule;
jest.isolateModules(() => {
  myModule = require('my-certain-module');
});
3