2012年4月12日木曜日

Rails3.2 + RSpecで楽しいTDD(導入編)

さて、標題にはTDDと書いてますが実際にはコード書いてからテスト書いてたりしてます。

手元でちまちま書いてるアプリもさすがにテストも無しではいかんだろうということで
まずは手元にあるコードのカバレッジが100%となるテストを書き、
その後次に何か乗っける時からはテストから書いていきたいと思います。

というわけで今回はテスト環境の導入編から。
この記事で前提とする環境は
・CentOS6
・Ruby on Rails 3.2.2
・Ruby 1.9.3 p-125
・MySQL
となっています。

(1)テストに必要なGemの導入
app_root/Gemfileに以下の記述を追加
gem 'rspec-rails'
gem 'simplecov', :require => false
#gem 'simplecov-rcov', :require => false
gem 'spork'

'rspec-rails'は文字通りRailsでRSpecテストを行うためのGem
'simplecov'はカバレッジ計測の為のGem(rcovはRuby 1.9系列では使用できない為)
'simplecov-rcov'はカバレッジレポートをrcovと同等の形で出力するためのgemで
Jenkins先生の出番がある人以外はいらないと思います。
sporkはTwiwt:Blog / jugyo : spork でサクサク RSpec on Rails3
こちらを参照。テストを高速に実行しまくる為に導入します。そして
$ bundle install

ここまでが済んだ状態で既存のものに対するテストのひな形を作る場合は
$ rails g rspec :controller hoge hage ...

てな感じで実行してみると(hoge,hageは自分が作ったコントローラ名)
app_root/spec/以下に自動生成されたテストケースのひな形ができると思います。

(2)テストの準備
1.sporkを起動する
テスト実行用のサーバーことsporkを起動します。
最初の1回のみ以下の設定が必要です。
$ spork --bootstrap

終われば
$ spork 

で起動。
2.カバレッジ計測処理の追加
app_root/spec/spec_helper.rbの先頭に以下の記述を追加
require 'rubygems'
require 'spork'

Spork.prefork do
end

Spork.each_run do
end

require 'simplecov'
require 'simplecov-rcov'
SimpleCov.start 'rails'



(3)テスト実行

$ rspec --drb spec/model/user_spec.rb

とこんな感じで実行できます。

$ rspec --drb spec/*

とかでまとめて実行も。
カバレッジは app_root/coverage/index.html
を見るとわかりやすく表示されていると思います。
次はmodelのバリデーションテストの書き方をメモしておこうと思います。

0 件のコメント:

コメントを投稿