ActiveRecord::Base有一个很大的 API,有多种查找和保存对象的方法。例如,您的AR::B对象可能已从多个方法实例化:
Foo.new(…)Foo.create(…)Foo.find(…)Foo.find_by_sql(…)Foo.find_[all_]by_*(…)bar.foos(协会)- ……当然还有关于关联的查找器方法
同样,有问题的对象可能会通过几种不同的方法持久化:
foo.create或者foo.create!foo.save或者foo.save!foo.update_attributes或者foo.update_attributes!
现在,在编写单元测试时,最好将外部方法调用存根,这样您的测试就可以专注于相关方法的业务逻辑。然而,当涉及到使用AR::B对象时——例如在控制器单元测试中——似乎你必须提交上述方法之一,而实际上就方法的业务逻辑而言,它不应该是重要的您选择的。
您是否必须将您的方法的行为与其实现紧密结合起来,还是我错过了一些简单的东西?