以下の内容はhttps://www.pandanoir.info/entry/2021/10/05/095907より取得しました。


Jest でステートを持ったモジュールをテスト毎に初期化したい

private でステートを持ったモジュールのテストをするとき、初期化用のメソッドを作っていませんか? 実は jest では内部ステートをリセットする方法があります。

やり方

やり方は単純で、require('./myModule') でモジュールを読み込み、各テストの前に jest.resetModules() を行うだけです。

例えばメモ化した関数のテストを考えます。当然、各テスト毎にメモ化状況はリセットしたいです。

export const memoizedFunc = memoize(f);
// import { memoizedFunc } from './myModule'; // これの代わりに
describe('memoizedFunc', () => {
  // beforeEach でテスト毎に require し直す
  let memoizedFunc;
  beforeEach(() => {
    jest.resetModules();
    memoizedFunc = require('./myModule').memoizedFunc;
  });
  test('case1', () => {
    /* ステートがリセットされている */
  });
  test('case2', () => {
    /* ステートがリセットされている */
  });
});

let memoizedFunc; から始まる5行を足すだけでテスト自体は書き直す必要がありません。簡単ですね。

参考

javascript - how to reset module imported between tests - Stack Overflow




以上の内容はhttps://www.pandanoir.info/entry/2021/10/05/095907より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14