CodeKata of Bowling by RSpec for Windows
スはスペックのス〜RSpecによるテスト駆動開発の実演〜
http://www.nicovideo.jp/watch/sm2370458
を見ながらやってみた。
■Windowsで初心者(Like Me)がやるときのポイント
- 色はあきらめる;;
- game.rbとgame_spec.rbは同じフォルダに置く
- game_spec.rbでrequireするのは'game'だけ
- specコマンドのオプションは「(無し)」か「-fs」
- コーディング中は一時停止する
- 感動する;;
■エラーが出たら・・
- Rubyが1.8系で文字コードがShift_JISなら、「であること」を「だべか」にする。
- Rubyが1.9系なら、game_spec.rbの先頭行にマジックコメントを付ける。(文字コードがShift_JISの場合、「# encoding: sjis」を付ける)
■余談
- 1.8で試すと、なぜか「133点であること」の「と」で落ちた。
- 「#!ruby -Ks」も効果なし。
- 最初は「と」がだめなのかと思ったけど、「あると」ならOK。
- どうも「こと」で終わるのがよくないらしい。
- 他にも「にょ」とか「にゃ」で終わる文字列も落ちた。
- なんということだ・・Shift_JISはJapaneseの敵だった
- ぬぬぬ・・とりあえずLocalLanguageにしておくか。
■参考コード
[game_spec.rb]
# encoding: sjis require 'game' describe Game, "すべてガターの場合" do before do @game = Game.new 20.times { roll_gutter } end it "スコアは0点" do @game.score.should == 0 #Assert end end describe Game, "すべて1ピンの場合" do before do @game = Game.new 20.times { @game.roll(1) } end it "スコアは20点" do @game.score.should == 20 end end describe Game, "ストライクの場合" do before do @game = Game.new roll_strike @game.roll(3) @game.roll(4) #24 16.times { roll_gutter } end it "スコアは24点" do @game.score.should == 24 end end describe Game, "パーフェクトゲームの場合" do before do @game = Game.new 12.times { roll_strike } end it "スコアは300点" do @game.score.should == 300 end end describe Game, "スペアの場合" do before do @game = Game.new roll_spare @game.roll(4) @game.roll(3) #21 16.times { roll_gutter } end it "スコアは21点" do @game.score.should == 21 end end # [1,4,4,5,6,4,5,5, 10, 0,1,7,3,6,4,10,2,8,6] => 133 describe Game, "Uncle Bobの受け入れゲームの場合" do before do @game = Game.new [1,4,4,5,6,4,5,5, 10, 0,1,7,3,6,4,10,2,8,6].each do |pins| @game.roll(pins) end end it "133点だべか" do @game.score.should == 133 end end private def roll_gutter @game.roll(0) end def roll_strike @game.roll(10) end def roll_spare @game.roll(5) @game.roll(5) end
■参考
スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
http://jp.rubyist.net/magazine/?0021-Rspec