2014-10-05 88 views
0

我写在rspec的测试:如何测试rspec中的.sample方法?

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测试ie eq“rock”

如何让它每次都通过?当测试随机返回值时,这对于未来的参考知道是非常有用的。

+0

您可以使用['srand'](http://www.ruby-doc.org/core-2.1.3/Kernel.html#method-i-srand)显式地为随机数生成器生成种子。 – Stefan 2014-10-06 08:25:06

回答

2

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

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

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