3

わかりました、テストを実行するのに助けが必要です。このクラスが文字「O」を受け取り、「move_computer」メソッドが呼び出されると、人が CLI に入力したものを返すことをテストしたいと思います。私の精神的なサブプロセッサは、これは変数を何かに割り当てて、ランダムな人間の入力をSTDINに保持するだけだと教えてくれます。今は理解できません...誰か私を正しい方向に向けてください。

これが私のクラスです...

class Player
  def move_computer(leter)
    puts "computer move"
    @move = gets.chomp
    return @move
  end
end

私のテストは次のようになります...

describe "tic tac toe game" do
  context "the player class" do
    it "must have a computer player O" do

      player = Player.new()
      player.stub!(:gets) {"\n"} #FIXME - what should this be?
      STDOUT.should_receive(:puts).with("computer move")
      STDOUT.should_receive(:puts).with("\n") #FIXME - what should this be?
      player.move_computer("O")
    end
  end
end
4

2 に答える 2

2

move_computer 入力を返すため、次のように言うつもりだったと思います。

player.move_computer("O").should == "\n"

完全な仕様を次のように書きます。

describe Player do
  describe "#move_computer" do
    it "returns a line from stdin" do
      subject.stub!(:gets) {"penguin banana limousine"}
      STDOUT.should_receive(:puts).with("computer move")
      subject.move_computer("O").should == "penguin banana limousine"
    end
  end
end
于 2012-09-01T02:13:57.803 に答える
1

これが私が思いついた答えです...

require_relative '../spec_helper'

# the universe is vast and infinite...it contains a game.... but no players
describe "tic tac toe game" do
  context "the player class" do
    it "must have a human player X"do
      player = Player.new()
      STDOUT.should_receive(:puts).with("human move")
      player.stub(:gets).and_return("")
      player.move_human("X")
    end
    it "must have a computer player O" do
      player = Player.new()
      STDOUT.should_receive(:puts).with("computer move")
      player.stub(:gets).and_return("")
      player.move_computer("O")
    end
  end
end

[管理者への注意...ボタンを 1 回押すだけで、すべてのコード テキストと右インデントを選択できればすばらしいと思います。(うーん…昔の特徴かと思った…?)]

于 2012-09-01T03:52:22.590 に答える