我在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"
我每次如何通过?在测试随机返回值时,这对于了解将来的参考非常有用。
答案 0 :(得分:3)
您可以测试预期的集合包含方法的结果:
it "chooses a random sign" do
expect(["rock","paper","scissor"]).to include(game.choose_sign)
end
答案 1 :(得分:1)
我建议测试逻辑而不是返回特定值。您可以测试重新运行值不是nil或不为空。 Sample方法将从数组中返回随机值,这将使您每次都难以通过测试。希望能帮助到你。