Ich habe eine ActionMailer
KlasseActionmethodenaufruf nil in Modul Rückkehr während rspec Test
class UserMailer < ActionMailer::Base
default from: "[email protected]"
def submission_reminder user
@user = user
mail :to => user.email, :subject => "Your timesheet needs to be submitted!"
end
end
Wenn ich rufe UserMailer.submission_reminder(current_user)
in Entwicklung es gibt mir ein Mail::Message
Objekt wie erwartet.
Der Platz in meiner Anwendung, wo diese Methode aufgerufen wird in einem Modul, das ich in den Ordner lib haben:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
Als ich TimesheetSubmissionNotifier.send_submission_reminders
in Entwicklung nennen, UserMailer.submission_remind (Benutzer) gibt die Mail-Nachricht und Liefern heisst, alles funktioniert wie es soll.
Das Problem ist, wenn ich TimesheetSubmissionNotifier.send_submission_reminders
durch einen RSPEC-Test aufrufen, gibt UserMailer.submission_reminder(user)
NULL zurück.
Wenn ich UserMailer.submission_reminder(user)
direkt von einem RSPECT-Test aufrufen, wird die Mailer-Nachricht wie erwartet zurückgegeben.
Hier sind die einzigen Linien Action Zusammenhang in meiner config/environment/test.rb:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Irgendwelche Ideen, warum die Methode zurückgibt nil?
Wenn Sie sagen, 'UserMailer inmission_reminder (user)' direkt aus einem rspec-Test zu verwenden, wie initialisieren Sie das Objekt ** user **, das Sie an die Methode übergeben? Sie erhalten es aus der Tabelle Benutzer oder Sie bauen es mit einer Factory, etc.? – Zheileman