RSpec sendet E-Mails (die nicht in ActionMailer :: Base.deliveries gespeichert sind) - Warum nicht?

8

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%     
Lichtamberg 22.10.2010, 10:38
quelle

5 Antworten

14

Ich bin so dumm ... hatte "ActionMailer :: Base.delivery_method =: smtp" in meinem setup_mail.rb-initializer ... AAARGH ....

    
Lichtamberg 22.10.2010, 17:35
quelle
8

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

haben

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.

    
Conner Smith 14.12.2013 16:58
quelle
2

In meinem Fall hatte ich

%Vor%

und ich hatte auch

%Vor%

Was (vermutlich) die E-Mail nicht sendet und auch nicht in ActionMailer::Base.deliveries array einfügt.

    
bfcoder 13.08.2015 15:33
quelle
0

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.

    
brntsllvn 12.11.2015 19:20
quelle
0

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!

    
Ka Mok 28.09.2016 01:33
quelle