我想使用rspec测试此方法:
ActiveModel::ArraySerializer.new(User.order("RANDOM()").where(:sex => "f").limit(10)).as_json
使用工厂女孩我创建了一些用户
FactoryGirl.create_list(:user, 15)
如何检查方法是否返回随机结果?感谢
答案 0 :(得分:0)
作为一个校长问题,单元测试应该是确定性的。您可以使用统计模型来测试结果是否是随机的,但这意味着您的测试有时会失败(1,2,3,4 ......也是一个有效的随机结果!)。
你到底想要测试什么?你想看看postgresql
随机方法是否是随机的?这超出了单元测试的范围。我能为您提供的最好的事情是期待呼叫order("RANDOM()")
,尽管这也可能有点多余:
expect(User).to receive(:order).with('RANDOM()').and_return(User)