RSpec - Get Started
RSpec: Home に記載されている Get Started をやってみました。
まずは、スペックファイルを書きます。スペックっていうのは仕様ってことでしょうね。
以下の内容で bowling_spec.rb という名前のファイルを作成します。このスペックファイルには、作成するクラスの仕様 (スペック) を記述します。
require 'bowling'
describe Bowling do
before(:each) do
@bowling = Bowling.new
end
it "should score 0 for gutter game" do
20.times { @bowling.hit(0) }
@bowling.score.should == 0
end
endこのスペックファイルをざっと眺めると、ここではボーリングクラスの仕様が記述されているようです。外側に describe ブロックがあり、その中に before と it というブロックをとる関数があります。
最初なんでざっと理解してみると、ここには 「ボーリング (Bowling) は、ボールが全部ガーターに入るとスコアが 0 になります」 ってことが書いてありそうです。
たぶん describe のブロックで仕様をおおまかにくくって分類するんでしょう。そして it のところに、詳細な仕様を書くということでしょうか。before(:each) のブロックの中は、それぞれの it ブロックの前に何度も実行されるので、ここで初期化をやっておくとよさそうです。
it ブロックの中を詳しく見てみると、@bowling.score.should == 0 と書いてあります。ここにある should == 0 ってのが仕様というか 「そのときボーリングのスコアは 0 に!」 ってのを英語っぽく書いてあるんですね。なるほど。
この it ブロックの中は、ピンにボールが当たらない (hit が 0) ボーリングを 20 回やっても、スコアーは 0 ですよってことですね。
ははーん、ここでこういう仕様を書いて、この仕様の通りに動作するクラスを書いていくというのが RSpec が提供する BDD なんですね。たぶん。初めたばかりなので、詳細はこれから見えてくるでしょう。