¿hay alguna manera de probar con PHPUnit (o tal vez con otro marco de prueba para PHP) si el correo se envía correctamente? Tengo que probar un código que usa PHP función de correo(). Con clase de correo personalizado, siempre podría hacer un simulacro, pero para el correo() ...? ¿Tal vez hay algún complemento que sea capaz de usar IMAP y verificar si se recibe el correo? (Y debe ser independiente del sistema operativo si es posible ...)cómo probar mail() usando PHPUnit
Respuesta
hay una manera de probar con PHPUnit (u otro marco de pruebas tal vez por PHP) si el correo se envía correctamente?
Si desea comprobar si es o no email se mandó correctamente, no es necesario PHPUnit, sólo tiene que hacer:
mail(.....) or die('Could not send the email !!');
O
if (!mail(......)){
echo 'Could not send the email !!';
}
Nota que esto le dice si se envió o no el correo NO si se recibió o no para quién t El correo electrónico fue enviado. Entonces, el mejor término aquí debería ser entregado.
La solución aquí sería envolver el correo en una clase que podría ser burlada y usarla en su lugar.
No veo el punto en la prueba de mail()
en sí, estoy seguro de que ya ha sido probado a fondo.
mi problema es que el correo() es solo parte del método más grande –
@ts El punto de Artefacto sigue en pie: la mejor idea sería establecer una clase contenedora que pueda simular 'mail()' en la prueba unitaria (y, por ejemplo, siempre devuelve 'verdadero' a menos que la dirección de correo electrónico del destinatario no sea válida). –
Hay un proyecto llamado MailCatcher que puede ayudar a asegurar que su correo electrónico ha sido enviado (a) y (b) está construido como se pretendía (tiene el contenido que usted puso en él). Nota: este programa no se verifique que su correo electrónico es admisible (es decir: no marcado como correo no deseado o rechazado por un servidor de correo por otras razones)
Mailcatcher es un servicio de SMTP y la interfaz web local para ayudarle a verificar correos electrónicos enviados por su código. Además, los correos electrónicos se pueden verificar mediante programación utilizando la API: por ejemplo:/messages, /messages/:id.json, /messages/:id.html etc. Para usar la API, necesitará algo como Guzzle para Llamadas HTTP La página del proyecto es http://mailcatcher.me/
Un tutorial agradable con enlaces a código de ejemplo: http://codeception.com/12-15-2013/testing-emails-in-php.html
- 1. Cómo probar modelos Symfony2 usando PHPUnit
- 2. Usando PHPUnit para probar cookies y sesiones, ¿cómo?
- 3. Accesorios temporales Doctrine2 para probar con phpunit
- 4. ¿Cómo puedo probar el código del socket con PHPUnit?
- 5. ¿Cómo probar a través de múltiples esquemas mysql con PHPUnit?
- 6. ¿Cómo puedo eliminar completamente PHPUnit usando el instalador de PEAR?
- 7. PHPUnit: escribir una clase de prueba para una interfaz y probar objetos usando una fábrica
- 8. Mejores prácticas para probar métodos protegidos con PHPUnit
- 9. Cómo resolver javax/mail/MessagingException?
- 10. Cómo probar encabezados de correo electrónico usando RSpec
- 11. Usando PHPUnit, ¿cómo se prueba solo dos o más grupos?
- 12. Cómo probar mi servlet usando JUnit
- 13. Cómo probar métodos vacíos usando EasyMock
- 14. cómo probar métodos asíncronos usando nunit
- 15. Php mail: cómo enviar html?
- 16. Cómo probar un servicio web en PHPUnit a través de pruebas múltiples?
- 17. Autenticación php mail
- 18. ¿Cómo probar los encabezados esperados?
- 19. Constantes globales en PHPUnit
- 20. Cómo probar un segundo parámetro en un objeto de burla PHPUnit
- 21. Pregunta de prueba de PHPUnit: cómo probar la unidad en mi clase
- 22. PHPUnit: cómo probar si se llama a la devolución de llamada?
- 23. PHPUnit StackTest :: assertEmpty() obsoleto
- 24. mail vs sendmail
- 25. CodeIgniter no puede enviar correo electrónico usando PHP mail()
- 26. PHP mail() usando Sendmail en Mac OS X Leopard (10.5.8)
- 27. PHPUnit no detecta excepciones esperadas
- 28. ¿Alguna manera de utilizar PHPUnit para probar las solicitudes y respuestas de API utilizando solo PHP?
- 29. asp.net mail add ReplyTo
- 30. ¿Cómo comparar XML similares con PHPUnit?
Muy bien, ya que el único fracaso se puede detectar de forma fiable es la falta de entrega local. Comprobar si se ha recibido en una bandeja de entrada puede fallar por una miríada de razones. –
no es para verificar si se envió el correo o no. es para pruebas unitarias. Necesito saber no solo si se envió el correo (no hay problema porque paso la devolución del correo()), sino también si está bien formado (encabezados, contenido, archivos adjuntos, etc.) y entregado en la cuenta correcta) –
@ts No estoy muy seguro de si esto es adecuado para las pruebas unitarias: son tantas cosas que podrían salir mal según la configuración del servidor. Yo diría que esto requiere un simulacro. –