Ruby on rails 重写可单元测试的方法
我发现我经常喜欢编写只查询数据库并返回结果的方法。这对于复杂过滤器或查询“链接”非常有用。例如,这里有一个模型Ruby on rails 重写可单元测试的方法,ruby-on-rails,performance,unit-testing,activerecord,ruby-on-rails-4,Ruby On Rails,Performance,Unit Testing,Activerecord,Ruby On Rails 4,我发现我经常喜欢编写只查询数据库并返回结果的方法。这对于复杂过滤器或查询“链接”非常有用。例如,这里有一个模型Clazz,它代表一个学生的学术班级Clazz有许多注册s。所以我写这个方法是为了保持我的代码干燥,因为我经常使用这个标准 class Clazz def cash_enrollments enrollments.where(payment_type: 'cash') end end 随着我对单元测试的深入,我注意到这种模式是有问题的,因为它与数据库的耦
Clazz
,它代表一个学生的学术班级Clazz
有许多注册
s。所以我写这个方法是为了保持我的代码干燥,因为我经常使用这个标准
class Clazz
def cash_enrollments
enrollments.where(payment_type: 'cash')
end
end
随着我对单元测试的深入,我注意到这种模式是有问题的,因为它与数据库的耦合太紧密了。当在数据库事务运行时测试大型数据集时,问题会加剧
有没有一种“单元测试友好”的方法来重写这段代码?还有其他更好的常见模式吗?您可能可以尝试提取查询对象或服务对象您可以将其剔除:
clazz.should\u receive(:cash\u registrations)。和\u return([这个预构建的数组])
不完全确定,但一定要签出存储库模式