RSpecチュートリアルやってみる

吉見和也(Kazuya Yoshimi) 2008-02-22 20:46:22

前々回、せっかくRSpec入れたのになんもやってないので、今回はRSpecでなんかやる

で探してみたら、こちらでRSpecのチュートリアルが紹介されていましたので、これをやっていきます。

RSpecのバージョンが古くて、そのままじゃ動かないとのことですが、だがそれがいい

何も考えずにやっちゃうとコピペになっちゃうしね。

それじゃあ行ってみましょう。

■ Mastermind? コードブレイカー?

残念ながらこれがどんなゲームなのかがわからないので、ぐーぐる先生に聞いてみました。

マスターマインド - Wikipedia

いまいちわからないけど、要は相手がどこに何色のピンを置いたかを当てればいいらしい。

■ 前準備

このチュートリアルをやるには、以下のものが必要

・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編集部の見解・意向を示すものではありません。

SpecialPR

  • 【3/31まで早期割引受付中!】「IBM Watson Summit 2017」開催

    日本IBMが主催する最大の国内総合イベント。テクノロジー・リーダーの疑問を紐解く「企業IT、セキュリティー、モバイル、データ解析などの進化を探る」詳細はこちらから!

  • デジタル変革か?ゲームセットか?

    デジタルを駆使する破壊的なプレーヤーの出現、既存のビジネスモデルで競争力を持つ
    プレイヤーはデジタル活用による変革が迫られている。これを読めばデジタル変革の全体像がわかる!