1

Boardというクラスがあります。その中でグリッドを初期化します。

rspec 仕様のボードのモックまたはスタブ (どちらか不明) を作成したいと考えています。

スタブまたはモックがどのように見えるべきかわかりません...

stub_board = stub('board') 
stub_board.stub(:[]).with(:b2).and_return("O")

わかりません...書きたいテストのために、ボードにいくつかのOを付けたいと思います。

誰でも手伝ってもらえますか?

参考までに、ここに実際のクラス委員会があります....助けてくれてありがとう、私はこれを3日間見つめてきました。

class Board
attr_reader :grid

def initialize(cell_value = " ")
  @grid = {
    a1: cell_value, a2: cell_value, a3: cell_value,
    b1: cell_value, b2: cell_value, b3: cell_value,
    c1: cell_value, c2: cell_value, c3: cell_value
  }
end

def drawgrid
  board = "\n"
  board << "a #{@grid[:a1]}|#{@grid[:a2]}|#{@grid[:a3]} \n"
  board << "----------\n"
  board << "b #{@grid[:b1]}|#{@grid[:b2]}|#{@grid[:b3]} \n"
  board << "----------\n"
  board << "c #{@grid[:c1]}|#{@grid[:c2]}|#{@grid[:c3]} \n"
  board << "----------\n"
  board << "  1 2 3\n"
end

def space_taken?(cell_location)
  @grid[cell_location] != " "
end
end
4

1 に答える 1

0

これが私の考えです。これは、スチューブまたはモックである必要はありません。簡単なテストから始めて、スチューブやモックなどでより多くの力を与えることができます。

Board クラスのオブジェクトがあります。このオブジェクトには、属性gridinitializeメソッドなどの入力があり、 や などの出力がdrawgridありspace_taken?ます。したがって、入力を設定し、特定の出力を期待するテストのアイデアです。それは可能性があります:

describe Board do

  describe "drawgrid" do

    it "shuold generate default string" do
      board = Board.new
      board.drawgrid.should == "here's your string"
    end

    it "should generate string with cell_value '*'" do
      board = Board.new('*')
      board.drawgrid.should == "string with '*' cell value"
    end

    # and so on
  end

  describe "space_taken?" do

    it "should set cell value" do
      board = Board.new
      board.space_taken?(:a1).should be_false
      board.grid[:a1] = '!'
      board.space_taken?(:a1).should be_true
    end

    # and so on
  end
end

SimpleCovなど、カバーされていない行を見つけるのに役立つコード カバレッジ分析ツールを使用できます。

于 2012-10-13T21:54:35.803 に答える