Ruby on rails 存根代表

Ruby on rails 存根代表,ruby-on-rails,rspec,Ruby On Rails,Rspec,我在账单上打了存根?方法 subset.stub(:账单?)和_返回(true) 行\项目是否有一个用于计费的委托?开账单 当我调用这些方法时,会出现以下情况 (rdb:1) subset.billed? true (rdb:1) subset.line_items[0].billed? false (rdb:1) subset === subset.line_items[0].order_subset true (rdb:1) subset.billed? == sub

我在账单上打了存根?方法
subset.stub(:账单?)和_返回(true)

行\项目是否有一个用于计费的委托?开账单

当我调用这些方法时,会出现以下情况

(rdb:1) subset.billed?  
true  
(rdb:1) subset.line_items[0].billed?  
false  
(rdb:1) subset === subset.line_items[0].order_subset  
true  
(rdb:1) subset.billed? == subset.line_items[0].subset.billed?  
false  
第一次通话时,它就起作用了
第二次,我在委托关系上调用billed方法,存根失败
在第三个例子中,我检查行项目关系的子集和子子集是否是同一个模型,是否为真
第四,我比较了直接调用子集和间接调用关系的相同方法的输出,结果失败


有人吃过这个吗

子集和子集。行项目[0]。顺序子集确实是不同的对象。==对于两个对象,最终使用以下逻辑:

要了解我的意思,请运行以下命令:

subset.object_id == subset.line_items[0].order_subset.object_id
你会发现你是假的

这是activerecord的一个问题。当您有反向关联时,它将加载记录的一个全新副本,而不是引用您已经加载的模型