RSpecのチュートリアルをやってみる

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

とりあえずやってみた。日本語にはしていない。

インストール

記述を無視して最新版(1.1.4)を突っ込む。
今の本家サイトは下記のところっぽい。
http://rspec.info/


downloadを見るとgemかgithubしか書いてない。
gitでpluginsフォルダに入れる。
http://github.com/dchelimsky/rspec-rails/wikis

cd vendor/plugins
git clone git://github.com/dchelimsky/rspec.git
git clone git://github.com/dchelimsky/rspec-rails.git

Rspec on RailsRspec Railsになったのかな??


ちなみに、svnならこっちみたい。
script/pluginでインストールしてくれる。

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

テスト駆動開発の流れ

テストコード書く → テスト実行 → 正常に"失敗"する → コード書く → テスト実行 → 成功!


テストがちゃんと失敗すれば、テストコードは正常であるということみたい。

specファイル書いてみた

チュートリアルに従って、サンプルアプリを作ってみる。
modelまでしかやってないけど、まあサクサクと作れる。
自然言語に近い形になっているので、僕のように直感で生きている者にとってはとても使いやすいように感じた。


書いたままの形でドキュメントも吐いてくれるし、いちいち仕様書とか作らなくても、「どこで、どんなことを」テストしているのかがすぐわかる。


いくら書き直しても、テストコードが保証してくれる安心感はとてもいい!
テスト&デバッグ、いつになったらバグがなくなるのかの不安からかなり解放されるんじゃないかとわくわくする!

疑問

Rspec書いてる途中でやっちゃったのが、テストファイル自体を間違えて記述しちゃったこと。しかもテスト結果が成功の場合。


例えば・・・
fooとbarというメソッドがあり、それぞれメソッド名を出力するとする。
そのテストを書くとすると・・・

(省略)
it "should be 'foo'" do
  @foo.foo.should == "foo"
end

it "should be 'bar'" do
  @foo.foo.should == "foo" # barの結果を見たいのに・・・
end
(省略)

どうみてもコピペ厨です本当にry


さてこのテストコード。出力してもOKが出てしまうし、もう一回テストソースを覗かないと間違っているとはわからない。
テストでエラーが出ればテストコード自体もチェックが入ると思うけど、通ってしまっている場合はどうなるのだろうか?


テストコード自体の妥当性をどう証明するかをいろいろ調べてみよう。