Тестирование циклического кода для вывода и gets.chomp - PullRequest
0 голосов
/ 09 января 2019

Пытаюсь проверить мой цикл в 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", фактический "Это ничья"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...