我有一个 ActiveRecord 模型,它有一些我想测试的回调和自定义验证。这意味着,我必须将它们全部公开。这是一个好的做法还是在这种情况下有更好的解决方案?
我要测试的方法示例:
def before_validation
original.edit(self) if original
end
validate :unique?, on: :create
def unique?
return true if original.blank?
errors.add(:base, 'The entry already exists')
false
end
换句话说:
- 如果我想测试“before_validation”方法,是否必须将其公开并直接在我的模型 Rspec 文件中调用 test_object.before_validation?
- 如果我不仅要测试自定义验证方法 unique?() 在验证时调用,而且还要测试方法本身,我是否也必须将 unique?() 公开?
问题是,这些方法我都没有在我的模型之外使用(所以它们应该是私有的),但是我怎么能在不公开它们的情况下进行测试呢?