みなさんモック大好きですよね?
外部依存から隔離してテストの実行を容易にする便利なものですもんね。
しかし、かの名著、オブジェクト指向設計実践ガイドでは、こう言っています。
モックを使用したテストは「夢の世界に生きる」状態を作る可能性があると。
この「夢の世界に生きる」という表現は、モック(スタブ)を使って現実から隔離された環境でテストを行う「理想の世界」を指すメタファーです。
現実世界とは異なる世界を作ってしまえるが故の脆さも表しています。
具体的には、モックの使用で実コードとテスト間のふるまい(インターフェイス)に乖離が生じ、テストの信頼性が落ちる可能性などが挙げられています。
では、モックの使用を避けるべきかというと、そうではないと思っています。
重要なのは、モックとの「上手な付き合い方」を見つけることです。
一緒に夢の世界でモックとの上手な付き合い方を見つけてみませんか?