Ho una classe ActionMailer
metodo ActionMailer chiamata di ritorno pari a zero nel modulo durante il test rspec
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
Se chiamo UserMailer.submission_reminder(current_user)
in fase di sviluppo mi restituisce un oggetto Mail::Message
come previsto.
Il posto nella mia applicazione in cui viene chiamato questo metodo è in un modulo che ho nella cartella lib:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
Quando chiamo TimesheetSubmissionNotifier.send_submission_reminders
in fase di sviluppo, UserMailer.submission_remind (utente) restituisce il messaggio di posta e consegnare è chiamato, tutto funziona come dovrebbe.
Il problema è quando chiamo TimesheetSubmissionNotifier.send_submission_reminders
attraverso un test rspec, UserMailer.submission_reminder(user)
restituisce zero.
Se chiamo UserMailer.submission_reminder(user)
direttamente da un test rspec, restituisce il messaggio di posta elettronica come previsto.
Qui ci sono le uniche linee relative alla ActionMailer nel mio config/ambiente/test.rb:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Tutte le idee perché il metodo sta tornando a zero?
Quando dici di chiamare 'UserMailer.submission_reminder (utente)' direttamente da un test rspec, come stai inizializzando l'oggetto ** utente ** che passi al metodo? Lo ottieni dalla tabella Utenti o lo costruisci con una fabbrica, ecc.? – Zheileman