Tengo un modelo de ActiveRecord que tiene algunas devoluciones de llamada y validaciones personalizadas que quiero probar. Significa que tengo que hacer que todos sean públicos. ¿Es una buena práctica o hay una mejor solución en este caso?Ruby on Rails: ¿deberían todos mis métodos de devolución de llamada de ActiveRecord ser privados?
Los ejemplos de los métodos que desea probar:
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
En otras palabras:
- Si quiero probar el método "before_validation", ¿tengo que hacerlo público y llamar a test_object .antes de la validación directamente en mi modelo Rspec?
- Si quiero probar no solo, ese método de validación personalizado único?() Se invoca en la validación, pero también, el método en sí mismo, ¿tengo que hacer también el único?() Público también?
El problema es que ninguno de estos métodos estoy usando fuera de mi modelo (por lo que deberían ser privados), pero ¿cómo podría probarlos sin hacerlos públicos?