Ruby on Rails: должны ли все мои методы обратного вызова ActiveRecord быть приватными?

У меня есть модель 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

Другими словами:

  1. Если я хочу протестировать метод «before_validation», должен ли я сделать его общедоступным и вызывать test_object.before_validation непосредственно в файле Rspec моей модели? ?
  2. Если я хочу протестировать не только этот пользовательский метод проверки unique?(), который вызывается при проверке, но также и сам метод, должен ли я также сделать уникальный?() общедоступным?

Проблема в том, что ни один из этих методов я не использую за пределами своей модели (поэтому они должны быть закрытыми), но как я могу протестировать их, не делая их общедоступными?

6
задан krn 11 June 2012 в 14:46
поделиться