rails matchers cleaner bot ruby-on-rails ruby tdd rspec

ruby on rails - matchers - ¿Cómo probar el envío de correo electrónico utilizando Rspec?



rspec ruby (2)

¿Qué quieres probar exactamente?

¿Quieres probar que el correo electrónico es realmente enviado?

No lo recomiendo, ya que hará que su prueba sea más lenta y realmente depende de la máquina que esté usando para ejecutar sus pruebas (conexión de red, servidor smtp).

Lo que normalmente hago es asegurarme de que la tarea de controlador / acción / rake que envía los correos electrónicos se ejecute correctamente (es decir, sin error, apago la llamada de envío final). También me aseguro de que el cuerpo, el título y los destinatarios del correo sean correctos.

Editar:

No directamente relacionado con las pruebas, pero acabo de llegar a este article .

Me gusta su punto de vista de usar el modelo para enviar correos electrónicos. Así que para explicar un poco más en detalles:

Yo usaría el controlador para configurar variables de vista como @body, @title, @recipient.

Por lo tanto, probaría que, dados los parámetros correctos, la plantilla de correo (que es una vista) se representa correctamente. Esto es donde pueden ocurrir errores desde mi punto de vista.

Actualizaré esta publicación con un ejemplo cuando vuelva a casa más tarde hoy.

¿Cuáles son las mejores prácticas y herramientas para probar el envío de correo electrónico utilizando rspec con Rails?

Por ejemplo, ¿cómo compruebo que se ha enviado un correo electrónico o qué debo probar para tener pruebas eficientes y una cobertura aceptable?

Si ustedes necesitan un ejemplo, ¿cómo iría y probaría esto?

class UserMailer < ActionMailer::Base def jobdesc_has_been_reviewed(user, title) @body[:title] = title @body[:jobdesc] = jobdesc @body[:url] = "http://" + user.account.subdomain + "." + Constants::SITE_URL + "/jobdescs/#{jobdesc.id}" end end