ActionMailer :: Base.deliveries nach RSpec-Test ausräumen
Habe ich Folgendes RSpec testen für meine UserMailer Klasse:
require "spec_helper"
describe UserMailer do
it "should send welcome emails" do
ActionMailer::Base.deliveries.should be_empty
user = Factory(:user)
UserMailer.welcome_email(user).deliver
ActionMailer::Base.deliveries.should_not be_empty
end
end
Dieser test bestanden, das erste mal, scheiterte aber zum zweiten mal ich lief es. Nach ein wenig Debuggen, es scheint, dass der 1. test Hinzugefügt ein Element der ActionMailer::Base.Lieferungen array und dieses Element wurde nie gelöscht. Das bewirkt, dass die erste Zeile in der Prüfung zu scheitern, da das array nicht leer ist.
Was ist der beste Weg, um klar aus dem ActionMailer::Base.Lieferungen array nach einem RSpec testen?
Kommentar zu dem Problem - Öffnen
warum sollten Sie nicht verwenden
ActionMailer::Base.Lieferungen = []
in Ihrer setup
- block? Ist diese Skillung befindet sich in
- spec/Mailer/
? InformationsquelleAutor der Frage Kevin Pang | 2011-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da BIN::Base.Lieferungen ist nur ein array, du kannst es initialisieren, um ein leeres array. Sie können loszuwerden, die zuerst überprüfen, ob es leer ist:
InformationsquelleAutor der Antwort Peter Brown
Können Sie deaktivieren die Lieferungen nach jedem test ganz einfach hinzufügen, diese in Ihre spec_helper.rb.
InformationsquelleAutor der Antwort coorasse
Als Andy Lindeman Punkte aus, klärt die Lieferungen erfolgt automatisch für mailer-tests. Aber für andere Arten, fügen Sie einfach
, :type => :mailer
auf der Verpackung block zu zwingen, das gleiche Verhalten.InformationsquelleAutor der Antwort d_rail