Rspecのテストコード例

FizzBuzzの例

require 'rubygems'
require 'rspec'
  
# ファイルを読み込む(定数の初期化)
require './fizzbuzz'

describe FizzBuzz do
   # テストする対象を明示する
  subject  { FizzBuzz.new }

   # context でテストケースの状況を指定する
  context "与えられた数字が3の倍数でも5の倍数でもないとき" do
     # itメソッドが1つのテストケースになる
    it "与えられた数字を返すこと" do
      subject.say(1).should == 1
    end
  end
  context "与えられた数字が3の倍数の時" do
    it { subject.say(3).should == 'Fizz' }
  end
  context "与えられた数字が5の倍数の時" do
    it { subject.say(5).should == 'Buzz' }
  end
  context "与えられた数字が3かつ5の倍数の時" do
    it { subject.say(15).should == 'FizzBuzz' }
  end
end

f:id:whitech0c0late:20130727183926p:plain

rspec 実行時にオプションで色付け(-c)したり、結果を仕様的に出力(-fs)できる。

追記
RSpecのshouldはもう古い!新しい記法expectを使おう! ということなので

require 'rubygems'
require 'rspec'

# ファイルを読み込む(定数の初期化)
require './fizzbuzz'

#FizzBuzz 与えられた数字が15のとき
describe FizzBuzz do
  # テストする対象を明示する
  subject  { FizzBuzz.new }
  # context でテストケースの状況を指定する
  context "与えられた数字が3の倍数でも5の倍数でもないとき" do
    # itメソッドが1つのテストケースになる
    it "与えられた数字を返すこと" do
      expect(subject.say(1)).to eq 1
    end 
  end 
  context "与えられた数字が3の倍数の時" do
    it { expect(subject.say(3)).to eq 'Fizz' }
  end 
  context "9の時" do
    it { expect(subject.say(9)).to eq 'Fizz' }
  end 
  context "与えられた数字が5の倍数の時" do
    it { expect(subject.say(5)).to eq 'Buzz' }
  end 
  context "与えられた数字が3かつ15の倍数の時" do
    it { expect(subject.say(15)).to eq 'FizzBuzz' }
  end 
end

こんな感じらしいです。
「9の時」ってのは無視してくださいはい。

Web開発の基礎徹底攻略 (WEB+DB PRESS plus)

Web開発の基礎徹底攻略 (WEB+DB PRESS plus)