Rspec:如何使用rspec检查随机化

时间:2014-03-05 13:26:54

标签: ruby-on-rails testing rspec

我想使用rspec测试此方法:

ActiveModel::ArraySerializer.new(User.order("RANDOM()").where(:sex => "f").limit(10)).as_json

使用工厂女孩我创建了一些用户

FactoryGirl.create_list(:user, 15)

如何检查方法是否返回随机结果?感谢

1 个答案:

答案 0 :(得分:0)

作为一个校长问题,单元测试应该是确定性的。您可以使用统计模型来测试结果是否是随机的,但这意味着您的测试有时会失败(1,2,3,4 ......也是一个有效的随机结果!)。

你到底想要测试什么?你想看看postgresql随机方法是否是随机的?这超出了单元测试的范围。我能为您提供的最好的事情是期待呼叫order("RANDOM()"),尽管这也可能有点多余:

expect(User).to receive(:order).with('RANDOM()').and_return(User)