Mam klasy ActionMailer
ActionMailer wywołanie metody powrocie nil w module podczas rspec testowanie
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
Jeśli zadzwonię UserMailer.submission_reminder(current_user)
w rozwoju zwraca mi Mail::Message
obiekt jak oczekiwano.
miejsce w mojej aplikacji, gdzie ta metoda jest wywoływana jest w module mam w folderze lib:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
Kiedy zadzwonić TimesheetSubmissionNotifier.send_submission_reminders
w rozwoju, UserMailer.submission_remind (użytkownik) zwraca wiadomości i dostarczanie jest nazywane, wszystko działa tak, jak powinno.
Problem polega na tym, że wywołuję TimesheetSubmissionNotifier.send_submission_reminders
poprzez test rspec, UserMailer.submission_reminder(user)
zwraca zero.
Jeśli zadzwonię pod numer UserMailer.submission_reminder(user)
bezpośrednio z testu rspec, to zwróci wiadomość mailer tak, jak powinna.
Oto tylko linie związane z ActionMailer w moim config/środowiska/test.rb:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
jakieś pomysły dlaczego metoda zwraca nil?
Kiedy mówisz, że wywołanie 'UserMailer.submission_reminder (user)' bezpośrednio z testu rspec działa, jak inicjujesz ** obiekt ** użytkownika, który przekazałeś do metody? Dostajesz go ze stołu użytkowników lub budujesz go w fabryce itp.? – Zheileman