Test metody z mail-em

Jak za pomocą Test::Unit przetestować czy metoda modelu która kończy się wysłaniem wiadomości email faktycznie wysłała wiadomość.
Wiem jak testować samego mailera ale jak sprawdzić czy ta linijka kodu wykonała się poprawnie

def cos_tam ..... ..... UserMailer.notification(....).deliver end
aplikcja jest na ruby 1.9.2 i rails 3.0.3

Test::Unit nie ma nic wspólnego z Railsami, ActionMailerem, ActiveRecordem, itp. Jeśli ustawisz delivery_options na test:

config.action_mailer.delivery_method = :test

… to wysłane maile będą dodawane do tablicy deliveries.

Jeśli delivery_method ustawione jest na :test to maile zamiast byc wysłane będą wpakowane do specjalnej tablicy ActionMailer::Base.deliveries

[code]def test_cos_tam
begin_mail_count = ActionMailer::Base.deliveries.size
cos_tam

assert_equal begin_mail_count.succ, ActionMailer::Base.deliveries
end[/code]
Tak było w starszych Railsach, ale moze w nowych bedzie tak samo.

Dzięki. Tak jak pisał @seban robiłem w starych Railsach.
Myślałem że w nowym zestawie jakoś ładniej to rozwiąże.

Ladniej jest w shouldzie http://www.rdoc.info/github/thoughtbot/shoulda/master/Shoulda/ActionMailer/Assertions#assert_sent_email-instance_method assert_sent_mail

Faktycznie ładniej.
Rozwiązanie które wkleiłeś trzy posty wyżej działa prawidłowo w zestawie Rails 3, Ruby 1.9.2.

Dzieki

Jeszcze możesz sprawdzić email_spec. Nie ma tego w dokumentacji ale opakowuje rzeczoną wcześniej deliveris w ładne metody typu mailbox_for(address) i zwraca wiadomości ‘dostarczone’ do tego adresu. Przejrzyj plik definicji stepów cucumber - tam w komentarzach jest jakie metody są dostępne (oprócz tych które są w dokumentacji).

Świetne, nie znałem. Dzięki.