Пытаюсь проверить мой цикл в Rspec, но не уверен, что это лучший способ сделать это. Пробовал несколько разных вариантов, но все, кажется, терпят неудачу, когда я проверяю для выходного вопроса и для ответа. Выходные данные дают мне весь цикл, а ответ дает мне результат ничьей, а не только ответ gets.chomp.
Я пытаюсь разработать игру Tic Tac Toe и заставить ее работать, используя метод цикла для игры в классе. Однако, когда дело доходит до тестирования в TDD, оно продолжает давать мне сообщения об ошибках. Мой код ниже:
def initialize
@player1 = []
@player2 = []
end
def play
i = 0
loop do
i += 1
print "Player 1 play: "
answer = gets.chomp
@player1.push(answer)
if WINNING_RESULTS.include?(@player1[0..2].sort)
return "Player 1 Wins"
break
end
if i == 9
return "It's a Draw"
end
i += 1
print "Player 2 play: "
answer1 = gets.chomp
@player2.push(answer1)
if WINNING_RESULTS.include?(@player2[0..2].sort)
return "Player 2 Wins"
break
end
end
end
Я ожидаю, что результаты будут следующими:
it "asks player one to pick a move" do
allow_any_instance_of(Game).to receive(:gets).and_return("TL")
expect { subject.play }.to output("Player 1 play: ").to_stdout
end
Приведенный выше выводит весь цикл «Игрок 1: Игрок»: «Игрок 2: игра», пока я не доберусь до 9
.
it "should receive an answer from the user" do
allow_any_instance_of(Game).to receive(:gets).and_return("TL")
expect(subject.play).to eq("TL")
end
Сказанное выше говорит: ожидаемый "TL", фактический "Это ничья"