1

使用 Ruby 1.8.6,当被测代码对结果调用 'count' 方法时,将 finder 方法存根以返回 Array 不起作用:

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

这是因为 Array.count 仅在 Ruby 1.8.7 中添加。Rails 还动态添加了一个计数方法,我相信是通过 ActiveRecord::Calculations 模块。

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

4

1 回答 1

-1

您也可以模拟计数:

arr = [user1, user2]
arr.stubs(:count).returns(arr.size)
User.any_instance.stubs(:friends).returns(arr)
于 2010-03-25T14:53:38.513 回答