テストしたいコールバックとカスタム検証を含む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?()も公開する必要がありますか?
問題は、私がモデルの外で使用しているこれらのメソッドのどちらも(したがって、プライベートにする必要がある)、公開せずにテストするにはどうすればよいかということです。