Rubyベストプラクティス 第1章 テストでコードを駆動する その2

第1章の後半です。師走ですし本書はさくさく進めます。

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

テストについてはだいたい既知の内容でしたが、わかっていてもなかなか実践が伴なわないので精進します。