UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Jest】mock化した関数の戻り値を条件で変えたい

ある関数のテストを書いているとき、その関数内で呼び出している別の関数(fetchしている関数)をモックにしている

このときテストするロジックが以下の場合

fetchの取得結果が5件以下の場合は、検索条件を変えてもう一度検索する

検索条件に応じたモックの返却する値を定義したい

モックの実装

調べたらmockImplementationを使うのがよさそう

jestjs.io

以下のように設定することで、検索条件criteriaによって返却するオブジェクトを制御することできた

    mockFunction.mockImplementation(
      (criteria: Criteria) => {
        return criteria.isSomeCondition
          ? Promise.resolve(MockResultForSomeCondition)
          : Promise.resolve(MockResult);
      },
    );