Rails3.2 でBDD、自動テストとか諸々の環境整えた備忘録
Railsでプロジェクトを進めるにあたり、BDD(振る舞い駆動開発)をやりたいと思いまずは環境構築をした覚え書きがこちらです。
Rspecまわり
まずは Rspec のテストを自動化したいと思って参考にしたエントリがこちら。
なるほど、Spork と Guard というものを使うと自動テストが捗るらしい。
Spork は 高速なテストサーバのようなもので、Guard は自動テストパッケージ。
あと、Rspec でテスト書いて行くにあたって、テスト時のモデルデータを用意するのに Fixture よりも factory_girl が捗るらしい。
詳しくは など。
…という事で、これも組み込もう。
以下のエントリを参照した。
rspec, factory_girl, spork, guardによる自動テスト環境の構築 - AnyType
Javascriptまわり
それから、Javascript のテストも書かねば。て事で調べた結果、JS版Rspec的な位置づけの Jasmine を利用する事にした。
Rails で利用する場合、jasmine-rails を gem で入れれば良し。
で、入れると http://localhost:3000/specs とかでブラウザからテスト結果が確認できる。で、ファイル編集したらブラウザも自動リロードするようにしたい。
て事で参考にしたエントリが以下。
Guardを使ってファイル更新時にブラウザをオートリロード – ひげろぐ
guard-livereload と、Chrome, Safari, Firefox 用に存在するエクステンションで実現できるようだ。
各エクステンションのDL先はこちらを参照した。
カバレッジまわり
テストを書くモチベーション維持するにはカバレッジ、という事で以下参考。
kennyjのブログ(仮): ruby1.9時代にrcovは使ってはいけない。simplecovを使おう!
Ruby1.8 までは rcov という gem を使うのが主流だったらしいけど、1.9 では simplecov らしい。
CIまわり
最終的に Jenkins で CI やれば万全の体制。
て事で以下のエントリなど。
Jenkins で Rails 3 プロジェクトのテスト結果とカバレッジをグラフ表示する - mallowlabsの備忘録
あーありがち - JasmineをCLIで走らせるならjasmine-headless-webkitが楽すぎる
こんなんなりました
最終的に今入ってるテスト環境まわりの gem は以下のようになった。
group :development, :test do gem 'jasmine-rails' gem 'guard-rails-assets' gem 'guard-livereload' gem 'guard-jasmine-headless-webkit' gem 'rspec-rails' gem 'factory_girl_rails' gem 'cucumber-rails' gem 'simplecov' gem 'simplecov-rcov' gem 'ci_reporter' gem 'spork' gem 'guard-spork' gem 'guard-rspec' gem 'guard-cucumber' gem 'rb-fsevent' gem 'growl' end
…という事で、調べだすとまあ Rails 周りは色々と環境が整ってて凄いな、モダンだなと感心する事しきりでした。Guard 超便利だなあ。
5/10 追記
最近やってるRailsプロジェクトのテスト方法 - #詰んでる日記
こちらがまとまってたー。Redisのテストとかも書かれてて参考にしたい。