2009-11-16 23 views
26

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

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

Si ustedes necesitan un ejemplo, ¿cómo iba a ir y probar 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 

Respuesta

24

de correo electrónico de las especificaciones parece una buena biblioteca

http://github.com/bmabey/email-spec

+0

Thansk! ¿Lo has probado? – marcgg

+0

No, no lo he probado, pero esta biblioteca resume la técnica que uso. – nicholaides

+0

He utilizado especificaciones de correo electrónico con RSpec y Cucumber, y parece ser exactamente lo que estás buscando. –

0

¿Qué desea para probar exactamente?

¿Quiere probar que el correo electrónico realmente se envió realmente?

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

Lo que suelo hacer es asegurarme de que la tarea de acción/modelo/rake del controlador que envía correos electrónicos se ejecute correctamente (es decir, sin error, termino 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 relacionados con las pruebas, pero sólo vine sobre este article.

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

Usaría el controlador para configurar variables de visualización como @body, @title, @recipient.

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

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

+0

Realmente no sé lo que quiero probar ... Busco una cobertura correcta (digamos que prueba si el correo electrónico tiene sido enviado y que tiene información válida). ¿Podría darme un puntero sobre cómo ir y hacer lo que describió en su último párrafo? Soy bastante nuevo para rspec, así que cuanta más información me puedas dar, más feliz estaré :) Gracias – marcgg

+0

puesto al día. Intentaremos publicar ejemplos de código esta noche –

Cuestiones relacionadas