jest でコールバックのテストをしたいとき

以下のようなコールバックを受けて実行する関数があります。

この関数がコールバックを(何回)実行したか、コールバックが受け取った引数は何か、戻り値は何かをテストしたい場合は、mockを利用します。(hoge関数は適当です)

const hoge = (type, callback, arg) => {
  if (type === true) {
    callback(arg)
  }

  return 'hoge'
}

export default hoge
import { jest } from '@jest/globals'
import hoge from './hoge.js'

describe('hoge関数のテスト', () => {
  const mockCallback = jest.fn((x) => 42 + x)
  hoge(true, mockCallback, 3)

  test('コールバックが呼ばれた回数は1回', () => {
    expect(mockCallback.mock.calls.length).toBe(1)
  })
  test('コールバックの引数は3', () => {
    expect(mockCallback.mock.calls[0][0]).toBe(3)
  })
  test('コールバックの戻り値は45', () => {
    expect(mockCallback.mock.results[0].value).toBe(45)
  })
})