如何在rspec中测试.sample方法?

时间:2014-10-05 19:13:35

标签: ruby rspec

我在rspec写了一个测试:

it "should choose a sign at random" do
  game.choose_sign
  expect(game.choose_sign).to eq "rock"
end

ruby​​代码:

def choose_sign
  ["rock","paper","scissor"].sample
end

代码有效但测试只在选择了一个与我在rspec测试中输入的值相匹配的值时才通过,即eq" rock"

我每次如何通过?在测试随机返回值时,这对于了解将来的参考非常有用。

2 个答案:

答案 0 :(得分:3)

您可以测试预期的集合包含方法的结果:

it "chooses a random sign" do
  expect(["rock","paper","scissor"]).to include(game.choose_sign)
end

答案 1 :(得分:1)

我建议测试逻辑而不是返回特定值。您可以测试重新运行值不是nil或不为空。 Sample方法将从数组中返回随机值,这将使您每次都难以通过测试。希望能帮助到你。