关联类型不匹配,但"预期"和"得到"是具有相同对象 ID 的同一类



这是一个rails应用程序。导轨 5.1,Rspec 3.6。我的 Rspec 测试套件中有一个失败的测试,我无法理解错误消息。据我所知,该关联期望并得到完全相同的对象,但它仍然抛出错误。我将不胜感激任何了解此错误并努力修复的见解。

相关(最小(模型定义:

class Member < ApplicationRecord
belongs_to :membership, inverse_of: :members
belongs_to :patient
end
class Patient < Client
has_many :members, dependent: :destroy
end

错误:

Failure/Error: return if member.update(membership: membership, patient: person)
ActiveRecord::AssociationTypeMismatch:
Patient(#47184337056660) expected, got #<Patient id: 163, ...> which is an instance of Patient(#47184337056660)

看起来在您的规范中,您期望一个类,但正在返回此类的对象。

预期患者(#47184337056660(,得到 #,这是患者(#47184337056660(的实例

这是这里的关键信息:这是

很难判断您是否需要修复规范或代码,因为您根本没有共享规范。

对于未来的线程阅读器,我发现了问题:

该测试已存根is_a?方法,以为此特定Patient实例返回 false。

天知道为什么3个月前的我这样做了!

引擎盖下导轨使用此方法确认正确的关联对象类型。在这种情况下,rails 检查实例是否is_a?(Patient)并返回 false。因此,患者实例的行为就像它不是Patient类的实例

一样

最新更新