RSpec on Railsを試してみた。

今回主に参考したのは以下のページ。

スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

タイトルからしてジョジョ臭がプンプンしやがる。
それはさておき読み進めてTest::UnitとRSpecの違いを理解。

基本的にやってることは同じなのだが、テストを設計の一部として明確に意識させるために記法などを工夫している。
Test::Unit が「テスティングフレームワーク」であるのに対して、Rspecは「統合テスティング環境」であることを目指している。

ということらしい。

RSpecのインストール

さてとにかく百聞は一見に如かず。
早速使ってみるかとRSpecをRailsのプラグインとして入れようとした段。

$ ruby script/plugin install http://rubyforge.org/var/svn/rspec/tags/REL_1_0_8/rspec

Plugin not found: ["http://rubyforge.org/var/svn/rspec/tags/REL_1_0_8/rspec"]

む、インストールできない。
なんだかファイルがないと言われる。

ぐーぐる先生に聞いてみた。

RSpec をインストールしてみた – Akasata’s Page(あかさたのページ)

たどって本家サイト発見。
いつも思うことだけれども本家サイトがサーチエンジンの検索結果の上位に来てないのは切ない。(※Google.com in Englishではちゃんとトップに来てた)

RSpec-1.1.2: Installation

本家サイトのドキュメントを見たところ現在は以下のURLで入れるのが正しい模様。

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

インストール成功。
ちなみに「CURRENT」の部分を「REL_1_1_2」とかにすると特定のバージョンを入れることができる。

RSpecを動かしてみる

次は実際動かしてみる。
既存のRailsアプリのディレクトリでRSpecの環境をセットアップ。

$ ruby script/generate rspec
$ script/generate rspec_model Item

これでrspecのディレクトリができてテストの雛形などのファイルが作成される。
モデルのファイルも作ろうとするが、すでにモデルはあるのでmodel/item.rbを上書きするか?と聞かれる。上書きしない。

さて何もまだテストを書いてないけどまず動かしてみたいので実行。

$ ruby script/spec -c spec/models/item_spec.rb

script/spec:4:in `run': wrong number of arguments (5 for 1) (ArgumentError)
        from script/spec:4

これは・・・なんだか動きません。
しばらくいろいろためしてscript/specの引数を削ってみたりしたけれども、そんないい加減なことでは別のエラーが出ただけだった。
さらっと試したいだけなのであんまり深追いする気力はない。

で、ちょっと休憩した後で方向転換して別の既存のRailsアプリで動かしてみると

$ ruby script/spec -c spec/models/item_spec.rb
F

1)
'Item should be valid' FAILED
expected valid? to return true, got false
./spec/models/item_spec.rb:9:
script/spec:4:

Finished in 0.322841 seconds

1 example, 1 failure

おお、ちゃんと動いた。

理由は不明。

動かなかった方はRails 1.2.6で動いた方はRails 2.0.3なんだけどその違いなんだろうか?
とか思ったが、RSpecのバージョンを1.0.8とかにしてもやっぱりエラーになったので、バージョンとかではなく動かなかった方がなんかおかしいっぽいな。
いろいろプラグインやライブラリを入れているせいだろうか・・・

とりあえず使えるようになったので新しく小さなアプリをRSpec使いながら作ってみようかな。