Rspecまとめ

Rspecは知ってはいたけど使ったこと無かった。
ちょっと興味がわいたので調べてみた。


まずは、BDD(ビヘイビア駆動開発)について。
基本的にTDD(テスト駆動開発)と思想的なところは変わらない。
TDDには、語弊があって、TDD=テスト手法というのは間違っていて、
実は設計手法だというのを明確に表すため、振る舞い=ビヘイビアという言葉を使うことにしたというだけ。


なので、実際、TDDの開発手法と違うところはない。
違うのは語彙だけ。(たぶん)↓

TDD BDD
テストケース(テストメソッド) exsample(実行可能なサンプル)
テストクラス 振る舞い(ビヘイビア)
アサーション エクスペクテーション

実際のテストはこんな感じ。

describe "〜の時、" do
 before do
  @obj = TestTarget.new
 end
 it "aの値は100となる" do
  @obj.a.should == 100
 end
 it "bの値は、0になる" do
  @obj.b.should == 0
 end
end

エラーが起きると、describeで指定した文字列+itで指定した文字列がエラー文字列として吐かれるので、
'〜の時、aの値は100となる':FAILD
という風になる。


また、実行結果を仕様書風に出力することもできるらしい。
Rspecの良いところは、仕様書っぽく書けること。と調べてて思った。
仕様書風に書くためには、1つのクラスのテストでも、describeを複数作らないと意味が通った文にならないため、うまいことファイルが分けられて見やすくなりそう。
Rspecに限って言えば、エクスペクテーションの記述がめちゃんこ分かり易い。
次はこれ使おう。

ここで調べた