La integración de la librería no hubiera sido completa sin una forma sencilla
de realizar pruebas con mensajes de correo electrónico. Para facilitar las
pruebas con emails, symfony dispone de un tester denominado mailer
(clase
sfMailerTester
)
El método hasSent()
prueba el número de mensajes enviados durante la
petición actual:
$browser->
get('/foo')->
with('mailer')->
hasSent(1)
;
El código anterior comprueba que la URL /foo
solamente envía un email.
Se pueden realizar pruebas más detalladas con cada email enviado gracias a los
métodos checkHeader()
y checkBody()
:
$browser->
get('/foo')->
with('mailer')->begin()->
hasSent(1)->
checkHeader('Asunto', '/Asunto/')->
checkBody('/Cuerpo/')->
end()
;
El segundo argumento de checkHeader()
y el primero de checkBody()
pueden
ser cualquiera de los siguientes elementos:
- Una cadena de texto, para realizar una comprobación exacta
- Una expresión regular que debe cumplir el valor comprobado
- Una expresión regular negativa (es decir, una expresión regular que empieza
por el carácter
!
) que no debe cumplir el valor comprobado
Las comprobaciones siempre se realizan sobre el primer mensaje enviado. Si se
han enviado varios mensajes, puedes elegir cual quieres comprobar mediante el
método withMessage()
.
$browser->
get('/foo')->
with('mailer')->begin()->
hasSent(2)->
withMessage('[email protected]')->
checkHeader('Asunto', '/Asunto/')->
checkBody('/Cuerpo/')->
end()
;
El método withMessage()
toma como primer argumento un destinatario. Si se
han enviado varios mensajes al mismo destinatario, también toma como segundo
argumento el mensaje que se quiere probar.
Por último, el método debug()
muestra toda la información sobre los
mensajes enviados para detectar fácilmente la causa de los problemas:
$browser->
get('/foo')->
with('mailer')->
debug()
;