Rubyベストプラクティス 第1章 テストでコードを駆動する その2
第1章の後半です。師走ですし本書はさくさく進めます。
- テスト手法
- モック、スタブの利用
- flexmock
- StringIO を用いて入出力をスタブにする
- IO を汎用オブジェクトでスタブにする方法もある
- 汎用オブジェクトはインタフェースと密結合する(内部処理の変更でスタブを変更しないといけない)
- StringIO を用いる方法は、それが IO として振る舞うことを要求しているのでそのまま動く
- けど一般的には汎用なモックオブジェクトを使うのが軽量でよい(StringIO は標準で備わってるというのが強い)
- XML を出力するメソッドのテスト - 出力結果の検証をどうするか
- 単に文字列比較するのは、エラー箇所の特定が面倒だったり、空白文字に過敏すぎたりする
- nokogiri でパースしてしまってその結果をチェックする
- 無論この時 nokogiri は正しいパースをするという信頼の元でテストしていることになる
- テストをライブラリに埋め込む
- if __FILE__ == $0 イディオム
- テストヘルパーを書く
- カスタムアサーションを書く
テストについてはだいたい既知の内容でしたが、わかっていてもなかなか実践が伴なわないので精進します。