RSpec on Rails

吉見和也(Kazuya Yoshimi) 2008-02-12 19:54:58

前回toytterにrails2.0ならではの機能を入れて行くと言いましたが、拡張していくんならテストは無視できないよねと、いきなりの寄り道です。

railsには最初からテストをするための枠組みが用意されていて、かなりテストへの敷居は低くなっているんですが、それとは別にRSpec on Railsというものを使うこともできます。

このRSpec、やってくれることはTest::Unitと同じ「テスト」なんですが、非常に気持ちよくテストを書くことができます。特にTDD(テスト駆動開発)をやっている、やりたいって人にはお勧めです

こちらのページでとてもわかりやすく解説してくれています。

スはスペックのス【第1回】

では早速、toytterでもrspecを使えるようにします。

インストール方法は


$ gem install rspec

$ ./script/plugin install http://rspec.rubyforge.org/svn/tags/REL_1_1_3/rspec/

$ ./script/plugin install http://rspec.rubyforge.org/svn/tags/REL_1_1_3/rspec_on_rails

rspecとrspec_on_railsのバージョンは同じ必要があるので、gemで入れたものとは別に、vendor/pluginsにもrspecを入れておきます。こうすることで、gemのrspecがバージョンアップしても、既存のプロジェクトには影響がでなくなります。

インストールが終わったら、

$ ./script/generate rspec

で、ディレクトリや基本のファイルが作成されます。

モデルやコントローラー作る時には、いつものにrspec_をつけてあげればTest::Unit用のファイルの代わりに、RSpec用のが作られます。


$ ./script/generate rspec_model Hoge

$ ./script/generate rspec_controller Hoge

toytterでもrspec用のテストファイルが欲しいので、


 ./script/generate rspec_model user

 ./script/generate rspec_model friendship

 ./script/generate rspec_model status

 ./script/generate rspec_controller user

で作り直しておきました。

で、なんもしないで"rake spec"ってやったらUser.new.valid?がfalseだよ!って怒られちゃったので、spec/models/user_spec.rbでUser.newしているところに適当な初期値を入れて回避です。

これでTDDの準備はOK!

次回こそはRails2.0でなんかやります!

押忍!

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR