一人前エンジニア道場

テストと品質 / 約25分

モック・スタブとテストの自動化

なぜこれを学ぶか

外部APIやDBに依存したテストは、ネットワーク状況やデータの状態によって結果が変わってしまいます。モック・スタブはこの不安定さを解消する道具です。

モック(Mock) は「呼ばれたか・どう呼ばれたか」を検証できる偽物の関数・オブジェクトです。スタブ(Stub) は「決まった値を返すだけ」の単純な代役です。両者は厳密には役割が違いますが、実務では「外部依存の偽物」として広く「モック」と呼ばれることが多いです。

外部依存(DBアクセス・API通信・時刻取得など)をモック化する理由は、テストの不安定さを解消 するためです。本物のAPIを呼ぶテストは、そのAPIが落ちているだけでテストが失敗してしまいます。

CIでのテスト自動化(インフラ・運用トラックのCI/CDと接続)により、pushするたびに全テストが自動実行されます。人が「テストを実行し忘れる」ことがなくなります。

テスト自動化は、AI生成コードの検証を仕組み化する 手段でもあります。AIが書いたコードが既存のテストを壊していないかを、人が毎回目視するのではなく自動でチェックできます。

重要ポイント

  • モックは検証可能な偽物、スタブは単純な代役
  • 外部依存をモック化してテストの不安定さを解消
  • CIでのテスト自動化はAI生成コードの検証も仕組み化する

コーディング演習実際に書く

指定したJSONデータを常に返す、テスト用の偽fetch関数を作る関数`createMockFetch`を実装してください。`createMockFetch(data)`を呼ぶと、`await mockFetch(url)`で`{ ok: true, json: async () => data }`を返す関数が得られます(urlの値は無視してよい)。

function createMockFetch(data)

スキルセルフチェック

このレッスンの内容をどの程度理解できましたか?