Czy dobrą praktyką jest pisanie testów dla prywatnych metod?Czy należy testować prywatne metody przy użyciu protokołu RSpec?
Rozważmy następujący prosty przykład:
class Group
has_many :members
private
def release_members
members.each { |member| member.update_attributes group_id: nil }
end
end
byłoby to dobra praktyka, aby napisać test dla metody release_members w RSpec? Sądzę, że musiałbyś napisać test wywołujący metodę z wysyłką tj. group.send(:release_members)
, który czasami jest mile zaskoczony.
Wygląda na to, że ruby rogues ma podcast autorstwa Sandi Metz, który mówi o tym temacie na http://rubyrogues.com/087-rr-book-clubpractical-object-oriented-design-in-ruby- with-sandi- metz /. Argumentem jest to, że możesz przetestować metodę prywatną, jeśli chcesz (ewentualnie nawet usunąć test), ale najważniejszy jest interfejs publiczny, który wywołał metodę prywatną. –