【发布时间】:2016-11-17 20:27:49
【问题描述】:
我有这个用于井字游戏的方法:
def start(token)
if token == "X"
puts "#{@player1}: Please enter a number for your X to go"
elsif token == "O"
puts "#{@player2}: Please enter a number for your O to go"
end
player_input = STDIN.gets.chomp
locate_player_input(token, player_input)
end
我只是想测试看看是否将正确的东西放到终端上。我有这个测试:
describe "#start" do
context "X player's turns" do
it "prints proper messege" do
expect(STDOUT).to receive(:puts).with("Harry: Please enter a number for your X to go")
game.start("X")
end
end
end
但我有一种感觉,game.start("X") 行是无法完成这项工作的。如何编写测试来检查 puts 语句是否正确输出?
【问题讨论】:
-
一个重构建议:不要使用
if、else,而是使用puts "#{@player2}: Please enter a number for your #{token} to go"。 -
好看。谢谢建议,我开始重构的时候一定会实现的
-
测试失败了吗?失败信息是什么?
-
终端只是在等待用户输入一些东西,我假设这是由调用 game.start("X") 后实际方法中的gets语句引起的