アプリケーションが複雑になってきて、疎結合でがんばっていてもどうしてもひとつ直すと一方に影響してしまう状況になったので、やっぱりテストもきちんとしなければと思いなおし調べた結果、RSpecというのがどうやらよいらしい。
一応デフォルトのTest:Unitを使っていたのですが、どうせ本格的に導入するならみなさんが「いい」といっているほうがいいにきまってます。
ということでRSpecをはじめました。
が、情報が少ない!いきなりつまずいてしまいました。
ネット上の記事によっていろいろ違うことが書いてあります。どれも環境によって使い方が違うのか、短い間に仕様がいろいろ変わったのかなと想像していますが。
なのであくまで私の環境においてどのようにはじめたかを記述します。
環境は下記のとおり
- OS:Windows7上にVirtualBoxにてUbuntuをインストール
- ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
- Rails 3.2.0
まず、インストールです。Gemfileに下記を記入
gem ‘rspec-rails’, ‘>= 2.6.0’, :group => [:development, :test]
$ bundle installを実行してインストールされたことを確認。
次にプロジェクトにRSpecを初期設定します。
$rails g rspec:install
この状態でscaffoldなどを使うと自動的にspec/のなかにmodels/hoge_spec.rbなどのファイルができます。
これらのファイルは自分で作ってもOKなのですが、だーっと作ってもらえるのはやっぱりうれしい。
ところが私の場合プロジェクトの途中ですのですでにたくさんのモデルやcontrollerを作ってしまっていました。
すでに存在するものに対してspecファイルを作るには以下のとおり。
$ rails generate rspec:model Hogehoge
コントローラも同様に作れる模様。
その後で
$ rake spec
ですべてのテストを実行できます。
■なやんだところ
一部の記事にはRSpecをインストールした後、
$ spec -v
でインストールされたかどうかを確認する。とありましたが
$ rspec -v
で確認することができました。
Gemファイルとして提供されているものではなくRailsのプラグインとして導入するよいと薦めている記事もあります。 これによってその後の操作が違うようです。