Rspec 消除水豚特征测试中的随机性

Rspec 消除水豚特征测试中的随机性,rspec,capybara,stubbing,Rspec,Capybara,Stubbing,我正在做一个简单的游戏,石头,布,剪刀使用Sinatra和测试与rspec水豚。游戏的对手是随机选择石头、纸或剪刀的电脑。我正在为网页结果编写测试。我将对手的回应打成“总是选择纸张”,这样玩家就输了(因为他选择了石头) 结束 我希望对手总是有:纸作为武器,这样玩家就输了:页面应该有内容:“你的对手选择了纸。你输了!”你应该在呼叫之前先截短呼叫点击按钮('rock') 我建议不要使用游戏。在预期中使用消息,并使用你的对手选择的。你输了取而代之。你也可以考虑在 Bug > P>双双不能移动到Caby

我正在做一个简单的游戏,石头,布,剪刀使用Sinatra和测试与rspec水豚。游戏的对手是随机选择石头、纸或剪刀的电脑。我正在为网页结果编写测试。我将对手的回应打成“总是选择纸张”,这样玩家就输了(因为他选择了石头)

结束


我希望对手总是有:纸作为武器,这样玩家就输了:页面应该有内容:“你的对手选择了纸。你输了!”

你应该在呼叫之前先截短呼叫
点击按钮('rock')


我建议不要使用
游戏。在预期中使用消息
,并使用你的对手选择的
。你输了取而代之。你也可以考虑在 Bug 

> P>双双不能移动到CabyBARA特性测试之前,将移动的攻击者移到<代码>。Double只能在单元测试中使用!下面的代码通过

scenario "Player chooses rock, and the computer chooses paper." do
allow_any_instance_of(Opponent).to receive(:weapon).and_return(:paper)
single_player_sign_in_and_play
click_button('rock')
save_and_open_page
expect(page).to have_content("Your opponent chose paper. You lose!")

结束

这仍然会返回对手的随机行为!你想要实现什么?现在还不清楚我希望对手总是有:纸作为武器,这样玩家就会输:页面应该有内容:
scenario "Player chooses rock, and the computer chooses paper." do
  allow(game).to receive_message_chain(:player2, :weapon) {:paper}
  allow(game).to receive(:outcome).and_return("You lose!")
  allow(game).to receive(:message).and_return("Your opponent chose paper. You lose!")
  single_player_sign_in_and_play
  click_button('rock')
  expect(page).to have_content(game.message)
end
scenario "Player chooses rock, and the computer chooses paper." do
allow_any_instance_of(Opponent).to receive(:weapon).and_return(:paper)
single_player_sign_in_and_play
click_button('rock')
save_and_open_page
expect(page).to have_content("Your opponent chose paper. You lose!")