個人的メモ:Rails AntiPatterns(8)
CHAPTER7 Testing
AntiPattern: Fixture Blues
Solution: Refactor into Contexts
- fixstureを使った書き方は一見シンプルだが、テストを複数の人が書いたり何度も改修が入ると何をしてるか分からなくなる。
- まずはfixtureで記載していた部分を必要な要素が見えるように記載する。
- モデルのcreateには直接要素のハッシュを渡す
- 上記の対応に加え、各テストで共通的に行う処理があるならcontextを使って意味のある単位に処理をまとめてsetup時にそれを実施するようにする
- 一つのテストに複数のassertがある場合、上のassertが失敗すると下のassertは実施されない。
- 上記を防ぐ為に複数のassertがあるテストはcontextで括った上で、共通の処理をsetupに記載するようにし、1assert毎別のテストに分ける。
- テストの専門家は1テストで1assertを推奨している。
- 上記の例はFactoryGirlを使うともっとシンプルになる
- ★FactoryGirlを使うとなんでシンプルになるのかがいまいちピンと来ていない。
AntiPattern: Lost in Isolationの手前まで読了
関連
個人的メモ:Rails AntiPatterns(一覧) - 猫の魔法
その他
- JSON.loadの件で追記があるかも。