rails generate ruby-on-rails email rspec actionmailer

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 .