mumumuの日記: Mock Object = Emulation code.
日記 by
mumumu
テストファーストにおいてテストを書く際、単純な入力の設定と
戻り値のアサーションという流れをうまく表現できない場合は数
多い。データベースアクセスレイヤであるとか、ストリームや、
TCP/IPの通信、GUI等がそれに該当する。
これらの場合、常に刻々と変化するデータやオブジェクトの状態
に合わせてテストコードを書かねばならないということになるが、
それが常に残っているという保証は当然ない。
では、こうした場合物理的なデータや通信、オブジェクトの状態
に頼らなければコードによる単体テストはできないのだろうか。
それを行うことも当然必要なのだが、コード内の動きだけを検証
したい、という場合、そうしたレイヤをエミュレートするコード
(スタブのようなもの)を書いてしまえばよい。それがMock Object
の考え方である。リンク先のIBMの記事は非常に参考になる。
テストファーストの意義も理解できていなかった昔は、Mockとい
われてもなんのことやらわからなかった。けれども、今ならわかる。
----
また、今の同僚は非常に巧いMock Objectを書く。コードを見て
学ぶところは数多い。
Mock Object = Emulation code. More ログイン