ruby on rails - generate - Prueba de ActionMailer con rspec
rails generate email (1)
Hay un buen tutorial sobre cómo probar ActionMailer usando RSpec. Esta es la práctica que he seguido y todavía no me ha fallado.
El tutorial funcionará para los Rails 3 y 4.
En caso de que el tutorial en el enlace de arriba se rompa, aquí están las partes relevantes:
Suponiendo el siguiente programa de correo de Notifier
y User
:
class Notifier < ActionMailer::Base
default from: ''[email protected]''
def instructions(user)
@name = user.name
@confirmation_url = confirmation_url(user)
mail to: user.email, subject: ''Instructions''
end
end
class User
def send_instructions
Notifier.instructions(self).deliver
end
end
Y la siguiente configuración de prueba:
# config/environments/test.rb
AppName::Application.configure do
config.action_mailer.delivery_method = :test
end
Estas especificaciones deben obtener lo que desea:
# spec/models/user_spec.rb
require ''spec_helper''
describe User do
let(:user) { User.make }
it "sends an email" do
expect { user.send_instructions }.to change { ActionMailer::Base.deliveries.count }.by(1)
end
end
# spec/mailers/notifier_spec.rb
require ''spec_helper''
describe Notifier do
describe ''instructions'' do
let(:user) { mock_model User, name: ''Lucas'', email: ''[email protected]'' }
let(:mail) { Notifier.instructions(user) }
it ''renders the subject'' do
expect(mail.subject).to eql(''Instructions'')
end
it ''renders the receiver email'' do
expect(mail.to).to eql([user.email])
end
it ''renders the sender email'' do
expect(mail.from).to eql([''[email protected]''])
end
it ''assigns @name'' do
expect(mail.body.encoded).to match(user.name)
end
it ''assigns @confirmation_url'' do
expect(mail.body.encoded).to match("http://aplication_url/#{user.id}/confirmation")
end
end
end
Apoyos a Lucas Caton para la publicación original del blog sobre este tema.
Estoy desarrollando una aplicación de Rails 4 que implica el envío / recepción de correos electrónicos. Por ejemplo, envío correos electrónicos durante el registro de usuarios, los comentarios de los usuarios y otros eventos en la aplicación.
He creado todos los correos electrónicos usando el programa de acción de mailer
y utilicé rspec
y shoulda
para probar. Necesito comprobar si los correos se reciben correctamente a los usuarios adecuados. No sé cómo probar el comportamiento.
Por favor, muéstrame cómo probar un ActionMailer
usando shoulda
y rspec
.