ActionMailer wysyła prawdziwe wiadomości e-mail w trybie testowym! - Jak wyłączyć?
Nowo zarejestrowani użytkownicy do mojej małej aplikacji muszą zostać zatwierdzeni przez administratora (mnie), zanim będą mogli uzyskać dostęp do witryny. Udało mi się wygenerować takie e-maile w fazie rozwoju za pomocąafter_create :send_admin_email
w moim modelu użytkownika, który działa świetnie. Mój problem polega na tym, że podczas testów generuję wielu użytkowników (przy użyciu FactoryGirl), a każdy utworzony użytkownik testowy wysyła prawdziwy e-mail. Przeprowadzanie testów jest jak wlewanie melasy w styczniu i muszę usunąć setki e-maili wysłanych do mojej skrzynki odbiorczej. Jak to wyłączyć?
Podstawy działania Mailera wProwadnice szyn mówi mi, że „Domyślnie Action Mailer nie wysyła e-maili w środowisku testowym. Są one tylko dodawane do tablicy ActionMailer :: Base.deliveries”.
Co więcej, wconfig/environments/test.rb
Mam:
config.action_mailer.delivery_method = :test
To jest dodatek doconfig/environment.rb
mający:
# Configuration for using SendGrid on Heroku
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => 'app[my app number]@heroku.com',
:password => '[something super secret]',
:domain => '[let's get this party started!.com]',
:enable_starttls_auto => true
}
ActionMailer::Base.delivery_method = :smtp
Jestem pewien, że brakuje mi czegoś prostego i podstawowego. Szukałem w okolicy powiązanych pytań i postów dotyczących tego, jak przetestować, czy ActionMailer rzeczywiście wysłał e-mail.
Uprzejmie dziękuję z góry za wszelkie myśli lub pomoc.
Dodatek: Następująca odpowiedź na podobne pytanie znalezione wCzy możliwe jest wyłączenie wiadomości e-mail ActionMailer, gdy testowanie ogórków ma miejsce na etapie rozwoju? Udało mi się powstrzymać wysyłanie wiadomości e-mail od szaleństwa. Mimo to musiałem dodaćActionMailer::Base.delivery_method = :test
do kilku plików rspec. Czy jest sposób, żeby to zamknąć na całym świecie? Czy ktoś ma jakieś przemyślenia na temat tego, co się dzieje?