前回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 Japan ホスティング特集
DELLが掲げる「新・仮想化アセスメントサービス」
Techno Exchange
ZDNet Japan Green IT
フォトレポート:分解、アップル「iPhone 3G」
ちょっと変わった「iPhone」向けアプリケーション10種
契約してわかった、iPhoneのさまざまな注意事項