カクカクしかじか

技術的なアレコレ

JestのmockReturnValueOnceがmockreturnvalueonce is not a functionになってしまう場合の解決法

経緯

該当の関数を jest.mocked(useStore) のようにモックしているのに、戻り値をモックしようとすると mockreturnvalueonce is not a function のエラーが出てしまいました...
関数だけモックしてもモジュール全体をパス指定してモックしないとダメなことがわかったので、本稿はその備忘録です。

結論

該当モジュールを先に「jest.mock("~/composables/store")」のようにモックしてから、関数をモックした後でmockReturnValueOnceするとうまくいくっぽいです。

実装例

import { useStore } from "~/composables/store";

// 該当モジュール全体をモック
jest.mock("~/composables/store");
// 関数をモック
const useStoreMock = jest.mocked(useStore);

<中略>

beforeEach(() => {
  useStoreMock.mockReturnValueOnce({
    <中略>
  });
});