tengo una clase ActionMailer
ActionMailer método llamado de regresar a cero en el módulo mientras que las pruebas 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
Si llamo UserMailer.submission_reminder(current_user)
en el desarrollo me devuelve un objeto Mail::Message
como se esperaba.
El lugar en mi aplicación en la que se llama a este método está en un módulo que tengo en la carpeta lib:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
Cuando llamo TimesheetSubmissionNotifier.send_submission_reminders
en el desarrollo, UserMailer.submission_remind (usuario) devuelve el mensaje de correo y se llama entrega, todo funciona como debería.
El problema es cuando llamo a TimesheetSubmissionNotifier.send_submission_reminders
a través de una prueba rspec, UserMailer.submission_reminder(user)
devuelve nil.
Si llamo a UserMailer.submission_reminder(user)
directamente desde una prueba de rspec, devuelve el mensaje de correo como se esperaba.
Estas son las únicas líneas relacionadas con ActionMailer en mi config/medio/test.rb:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Cualquier idea por qué el método se vuelve nula?
Cuando dices que llamar 'UserMailer.submission_reminder (user)' directamente desde una prueba rspec funciona, ¿cómo estás inicializando el objeto ** usuario ** que pasas al método? ¿Lo obtiene de la tabla Usuarios o lo construye con una fábrica, etc.? – Zheileman