Mam klasy wiadomości, które można zainicjować, przekazując argumenty do konstruktora lub przekazując żadnych argumentów, a następnie ustawiając atrybuty później za pomocą akcesorów. Istnieje pewne przetwarzanie wstępne w metodach ustawiających atrybuty.Jak mogę potwierdzić podczas inicjowania zachowania z RSpec?
Mam testy, które zapewniają, że metody ustawiacza robią to, co powinny, ale nie potrafię wymyślić dobrego sposobu na sprawdzenie, czy metoda inicjowania faktycznie wywołuje ustawienia.
class Message
attr_accessor :body
attr_accessor :recipients
attr_accessor :options
def initialize(message=nil, recipients=nil, options=nil)
self.body = message if message
self.recipients = recipients if recipients
self.options = options if options
end
def body=(body)
@body = body.strip_html
end
def recipients=(recipients)
@recipients = []
[*recipients].each do |recipient|
self.add_recipient(recipient)
end
end
end
Możliwe wytyczne tutaj: http://stackoverflow.com/questions/316294/rspec-how-to-stub-an-instance-method-called-by-constructor –