💬

jest.mockedでモックオブジェクトを型付きで取得する

2023/02/06に公開

jest + TypeScript環境で、モックした関数のmockResolvedValue等の関数を利用する時、面倒なので以下のようにas jest.Mockで型を変換して実行していたが、

import { hoge } from './hoge';

jest.mock('./hoge');

const hogeMock = hoge as jest.Mock;
hogeMock.mockResolvedValue();

// シンプルに以下など
(hoge as jest.Mock).mockResolvedValue();

jest.mocked関数を使うと、モックした関数の引数・返り値の型が効いた状態でモックオブジェクトを取得できるのでおすすめ。

import { hoge } from './hoge';

jest.mock('./hoge');

const mockedHoge = jest.mocked(hoge);

mocked.mockResolvedValue(); // 型が効く
mocked.mock.calls[0] // ここも型が効く

Discussion