モック(Mock)とは、プログラムのテストを行う際に、本物の代わりとして用意する模擬的な部品やデータのことです。まだ完成していない機能や、実行するとお金がかかったり時間がかかったりする処理を、見た目や振る舞いだけそっくりに再現したもので代用します。
現実世界に例えると、モックはドラマの撮影で使われる小道具の紙幣のようなものです。本物のお金でなくても、撮影のシーンを成立させるにはそれで十分であり、わざわざ本物を用意する必要がありません。
スタブとの違い
| 用語 | 内容 |
|---|---|
| スタブ | 決まった値を返すだけの単純な代役 |
| モック | 呼び出された内容を記録し、検証にも使える代役 |
モックが使われる場面
外部の決済サービスと連携する機能をテストする際、本番の決済処理を実際に走らせるわけにはいかないため、決済が成功したことにするモックを使ってテストを進めます。天候情報やメール送信など、外部のサービスに依存する処理でもよく利用されます。実行のたびに料金が発生するようなサービスとの連携でも、安心して繰り返しテストできます。
モックを使うメリット
モックを活用することで、まだ完成していない他の部分の開発と切り離して、テストしたい機能だけに集中できます。実際の外部サービスがメンテナンス中であっても、開発やテストの作業を止めずに進められる点も大きな利点です。チーム内の作業分担もしやすくなります。
正しく呼び出されたかの検証
モックには、「想定した回数だけ正しく呼び出されたか」「正しい値が渡されたか」を記録し、後から確認できるという特徴があります。この検証機能により、見た目の動作確認だけでなく、内部のやり取りが正しいかどうかも確かめられます。
モックを使う際の注意点
モックはあくまで模擬的な代用品であるため、本番の環境や実際のサービスとまったく同じ挙動をするとは限りません。最終的には、モックを使わない本番に近い環境でのテストもあわせて行い、実際の動作を確認することが欠かせません。
フェイクとの違い
似た言葉に「フェイク」がありますが、フェイクは簡易的ながらも実際に動作する仕組みを持つ代用品を指すことが多く、モックとは区別して使われる場合があります。呼び方は現場によって異なることもありますが、いずれも本物を用意せずにテストを進めるための工夫という点は共通しています。
テストコードにおける記述例
多くのプログラミング言語には、モックを簡単に作成できる専用のライブラリやフレームワークが用意されています。開発者はこれらの道具を使うことで、複雑な外部サービスの代役を、少ないコード量で用意できるようになっています。

コメント