c'è un modo per testare con PHPUnit (o forse altri framework di test per PHP) se la posta viene inviata correttamente? Devo testare un codice che utilizza la funzione PHP mail(). Con la classe di mailer personalizzata potrei sempre fare finta, ma per mail() ...? Forse c'è qualche plugin che è in grado di usare IMAP e verificare se la posta è ricevuta? (E dovrebbe essere operativo agnostico se è possibile ...)come testare mail() utilizzando PHPUnit
risposta
c'è un modo per testare con PHPUnit (o forse altro ambiente di test per PHP) se la posta viene inviata correttamente?
Se si vuole verificare se mail è stata inviata con successo, non è necessario phpunit, è sufficiente fare:
mail(.....) or die('Could not send the email !!');
O
if (!mail(......)){
echo 'Could not send the email !!';
}
Note che questo ti dice se è stata inviata o meno la posta NON è stata ricevuta o meno a chi t l'email è stata inviata. Quindi il termine migliore dovrebbe essere consegnato.
La soluzione sarebbe quella di racchiudere la posta in una classe che potrebbe essere derisa e utilizzarla.
Non vedo il punto nel test mail()
stesso, sono sicuro che è stato già testato a fondo.
il mio problema è che mail() è solo una parte del metodo più grande –
@ts Il punto di Artefacto è ancora in piedi: l'idea migliore sarebbe quella di impostare una classe wrapper che possa imitare 'mail()' nel test dell'unità (e, per esempio, restituisce sempre 'true' a meno che l'indirizzo di posta elettronica del destinatario non sia valido.) –
C'è un progetto chiamato MailCatcher che può aiutarti a garantire che la tua email sia stata inviata (a) e (b) sia costruita come previsto (contiene il contenuto che hai inserito). Nota questo programma non verifica che la tua email è ricevibile (cioè: non contrassegnati come spam o respinta da un server di posta per altri motivi)
Mailcatcher è un locale di interfaccia del servizio SMTP e web per aiutare a verificare le email inviate dal vostro codice. Inoltre, le e-mail possono essere verificate a livello di codice utilizzando l'API: ad esempio:/messages, /messages/:id.json, /messages/:id.html ecc. Per utilizzare l'API è necessario qualcosa come Guzzle per rendere Chiamate HTTP La pagina del progetto è http://mailcatcher.me/
Un bel tutorial con i collegamenti alle esempio di codice: http://codeception.com/12-15-2013/testing-emails-in-php.html
- 1. Come testare i modelli Symfony2 usando PHPUnit
- 2. Come testare un servizio Web in PHPUnit attraverso più test?
- 3. Testare l'invio di e-mail
- 4. Come posso testare il codice socket con PHPUnit?
- 5. Domanda Test PHPUnit - Come testare la mia classe
- 6. Come PHPUnit testare un metodo senza valore di ritorno?
- 7. Come testare l'invio di e-mail usando Rspec?
- 8. come testare $ window.open utilizzando gelsomino
- 9. Mocking dell'oggetto PDO utilizzando PHPUnit
- 10. Test delle API REST utilizzando PHPUnit
- 11. Come testare le intestazioni delle e-mail usando RSpec
- 12. Zend Framework 2 phpunit testare una tabella con un join
- 13. Unità testare una classe di servizio symfony con PHPUnit
- 14. Come testare e-mail nel test funzionale (Symfony2)
- 15. test se matrice contiene valore utilizzando PHPUnit
- 16. come inviare e-mail utilizzando asincrona django
- 17. Get fonte mail utilizzando Zend_Mail
- 18. mail Inoltra utilizzando MailKit (C#)
- 19. bash e telnet per testare una e-mail
- 20. Come testare con MediatR
- 21. Costanti globali in PHPUnit
- 22. Invia e-mail utilizzando OAuth
- 23. Come testare il risultato di un div cliccato con Laravel? (PHPUnit)
- 24. Come si usa PHPUnit per testare una funzione se tale funzione dovrebbe uccidere PHP?
- 25. test error_log con PHPUnit
- 26. Un modo per usare PHPUnit per testare le richieste e le risposte API usando solo PHP?
- 27. Come confrontare XML simili con PHPUnit?
- 28. Testare un pacchetto Laravel
- 29. Come testare JavaMailSender di Spring
- 30. Uscita strana da PHPUnit
destro sul, perché l'unico fallimento è possibile rilevare in modo affidabile è la mancata consegna locale. Controllare se è stato ricevuto in una casella di posta può fallire per una miriade di ragioni. –
non serve per controllare se la posta è stata inviata o meno. è per le prove di unità - ho bisogno di sapere non solo se la posta è stata inviata (nessun problema come ho passato il ritorno di mail()), ma anche se è stato ben formato (intestazioni, contenuto, allegati ecc.) e consegnato al giusto account) –
@ts Non sono sicuro che sia adatto per il test delle unità: sono così tante cose che potrebbero andare storte a seconda della configurazione del server. Direi che questo richiede una finta. –