存根ActiveRecord结果数组

时间:2010-03-25 14:25:06

标签: ruby-on-rails ruby testing stubbing

使用Ruby 1.8.6,当测试中的代码调用结果上的'count'方法时,对finder方法进行存根以返回数组不起作用:

User.any_instance.stubs(:friends).returns([user1, user2])

那是因为Array.count只在Ruby 1.8.7中添加了。 Rails还动态添加了count方法,我相信通过ActiveRecord :: Calculations模块。

有没有办法将此结果数组转换为与Rails finder方法返回的特殊Array类型完全相同的行为?分页结果时,很简单:我可以简单地调用[] .paginate。但这不适用于正常的取景器结果。我试过[].extend(ActiveRecord::Calculations),但这也不起作用。

1 个答案:

答案 0 :(得分:-1)

您也可以模拟计数:

arr = [user1, user2]
arr.stubs(:count).returns(arr.size)
User.any_instance.stubs(:friends).returns(arr)