モック
もっく
Mock
一言でいうと
テスト中に外部依存を「振る舞いが検証できる偽物」に差し替える仕組みのこと。
詳しい意味
モックは、テスト時にDBや外部API、メール送信といった「本物だと遅い・不安定・お金がかかる」依存先を、振る舞いと呼び出しを検証できる偽物に差し替えるテクニック・オブジェクトです。「呼ばれたか」「何回呼ばれたか」「どの引数で呼ばれたか」を後から確認できるのがスタブとの違い。Jest / Vitest の `jest.fn()` `vi.fn()`、Python の `unittest.mock` などで実装します。本物に依存しないので高速で安定したテストが書ける反面、「モックが本物と乖離する」リスクがあるため、契約テストや統合テストと併用します。
何に使うか
外部APIやDBに依存する関数をユニットテストするとき。メール送信や決済処理のようにテストで実行したくない副作用を抑えるとき。あるモジュールが期待通りに別モジュールを呼び出しているか検証するとき。
どんな時に出るか
「ここはモックして」「モックの戻り値を変えてエラー系をテスト」「モックが本物と乖離してる」といった場面で登場します。
具体例
- 外部API呼び出しをモック化して、ネットワーク無しでもユニットテストが走るようにした。
- モックの戻り値を「タイムアウト」に差し替えて、エラー処理をテストした。
別名・略称
mock(もっく)モッキング(もっきんぐ)
間違えやすい語
初心者向けメモ
舞台稽古の「練習用の小道具」のようなものです。本番で使う高価な小道具を稽古で使う代わりに、見た目だけ似せた練習用を使います。本物と違って気軽に何度も使え、しかも「ちゃんと拾われたか」を確認できる。