前々回、せっかくRSpec入れたのになんもやってないので、今回はRSpecでなんかやる
で探してみたら、こちらでRSpecのチュートリアルが紹介されていましたので、これをやっていきます。
RSpecのバージョンが古くて、そのままじゃ動かないとのことですが、だがそれがいい
何も考えずにやっちゃうとコピペになっちゃうしね。
それじゃあ行ってみましょう。
■ Mastermind? コードブレイカー?
残念ながらこれがどんなゲームなのかがわからないので、ぐーぐる先生に聞いてみました。
いまいちわからないけど、要は相手がどこに何色のピンを置いたかを当てればいいらしい。
■ 前準備
このチュートリアルをやるには、以下のものが必要
・Ruby
・RubyGems
・RSpec (gemで入ってればOK)
■ スタート
チュートリアルそのままじゃ動かないので、いろいろいじりながらいきます。
まずはディレクトリとかベースになるファイルとか作る。
mastermind/specs/
mastermind/src/
mastermind/mastermind.rb
mastermind.rb
require 'rubygems' require 'spec'
■ その1
specs/all_white_code_spec.rb
require File.dirname(__FILE__) + '/../mastermind' describe "An all white code with an all white guess" do before do all_white_code = Mastermind::Code.new(:white, :white, :white, :white) all_white_guess = Mastermind::Code.new(:white, :white, :white, :white) @score = all_white_code.mark(all_white_guess) end it "should score 4 black pegs" do @score.black.should == 4 end end
context => describe
setup => before
specify => it
should_equal 4 => should == 4
それぞれこんな感じで修正
ここでrspecを実行すると、Mastermindなんてないよって怒られる。requireしてないんだから当然だけど
src/code.rbを作成してあげる
module Mastermind class Code end end
で、このファイルを読み込みたいので、mastermind.rbに以下の一行を追加する
require File.dirname(__FILE__) + '/src/code'
チュートリアルには require '/src/code' って書いてあるけど、それだとtextmateからspecを実行できないので絶対パスで指定するようにする。
その後はチュートリアルに従って進めていく。score.rbにblackというメソッドを定義して、4を返すようにしたところで、RSpecに怒られなくなりました。score.rb作ったらmastermind.rbで読み込むのを忘れないように。
ここで一区切りらしいので、先は次回に
押忍
※このエントリはZDNETブロガーにより投稿されたものです。朝日インタラクティブ および ZDNET編集部の見解・意向を示すものではありません。