モックとスタブを使う
モック
モックオブジェクト (Mock Object) とは、ソフトウェアテスト時、特にテスト駆動開発、ビヘイビア駆動開発における代用の下位モジュールスタブの一種。スタブと比較して、検査対象のモジュールがその下位モジュールを正しく利用しているかどうかを検証するのに使われる。
http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%83%E3%82%AF%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
スタブ
スタブ (stub) とは、複数のモジュールからなるコンピュータプログラムの検査(ソフトウェアテスト)時における下位モジュールの代用品のこと。元々の意味は、切り株のこと。
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96
まとめ
- モックとスタブは、適切なやり取りや動作を検証しつつ、テストから外部への依存関係をなくすのに使える
- スタブは、ある機能を事前に用意された結果を返すように置き換えて、他のコードのテストを簡単にするために使われる
- モックは、テストのために外部リソースの代わりになるオブジェクトを作るために使われる。モックオブジェクトには期待される応答が用意され、テストが実行された時には、その応答が実際になされたかどうかを検証する。これはmy_obj.should_receive(:foo).onceのようなものがあり、my_objで決してfooが呼び出されないなら、テストは失敗するということを意味する。これがモックとスタブの大きな違い。
- 複雑な出力をテストするときには、あなたが生成する出力フォーマットをパースするツールを見つけて、その結果に対してテストを書くことが最善の方法だ
- もしかなり労力をかけないと生成したデータをパースできないなら、期待される出力をファイルに格納しておき、必要に応じてそのファイルをテストに読み込ませて、diffユーティリティを使って期待される出力と実際の出力を比較することを検討しよう
- Nokogiriは、たいていのXMLフォーマットに対してドキュメントをパースして簡単に検索できるようにする機能がある。
コメント