Ich benutze rspec und wenn ich rake spec, der Benutzer Mailer sendet E-Mails über SMTP und nicht speichert die E-Mail in der ActionMailer :: Base.deliveries-Array (aufgerufen von einem Benutzer-Beobachter) ...
Könnten Sie mir einen Hinweis geben, warum?
%Vor%Konfigurationsdateien:
%Vor%Ich bin so dumm ... hatte "ActionMailer :: Base.delivery_method =: smtp" in meinem setup_mail.rb-initializer ... AAARGH ....
Um die Lösung für dieses Problem ein wenig mehr zu erarbeiten:
In Ihrer config / enviroments / test.rb sollten Sie standardmäßig die Zeile config.action_mailer.delivery_method = :test
Dies bedeutet, dass ActionMailer die E-Mail nicht normal versendet, sondern die gesendete E-Mail im Array ActionMailer::Base.deliveries
speichert. Dies ist hilfreich beim Testen, da Sie mithilfe der Methode inspect, count, length im Array ActionMailer :: Base.deliveries feststellen können, wie viele E-Mails snt wurden.
Wenn Sie jedoch die Übermittlungsmethode auf " config.action_mailer.delivery_method = :smtp
" setzen, könnte dies Ihren vorherigen delivery_method =: test überschreiben. Daher wird Ihr ActionMailer::Base.deliveries
nicht ausgefüllt.
Ich hatte genau das getan, während ich MailCatcher benutzt habe, um meine gesendeten E-Mails zu sehen, was dazu führte, dass meine Tests fehlschlugen, obwohl ich sicher war, dass E-Mails richtig gesendet wurden!
Stellen Sie also sicher, dass Sie keine andere Methode delivery_method als: test in Ihrer Testumgebung einstellen.
Als Nebenbemerkung: Wenn Sie Devise verwenden, sollten Sie stattdessen das Array Devise.mailer.deliveries
überprüfen.
Ein weiterer möglicher Fehler ... machen Sie nicht den Fehler,
mit einzubeziehen %Vor%in der Datei config / environment.rb, von der ich fälschlicherweise der Meinung war, dass sie durch die spezifischere config / environments / test.rb überschrieben würde. Löschen der obigen Zeile von config / environment.rb behob das Problem für mich.
In meinem Fall habe ich .deliver
method in meinem spec.rb
vergessen. Es ist komisch, aber ich bekomme eine STDOUT-Nachricht von Rails (Rails 5) von "Email delivered" auch ohne sie, was ziemlich verwirrend war. Ein Blick auf deine Brille ließ mich erkennen, dass ich es vergessen hatte. Danke!
Tags und Links ruby-on-rails-3 ruby-on-rails rspec email observer-pattern