テストと品質 / 約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)
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?