Saltar al contenido

¿Cómo pruebo el JavaMailSender de Spring?

Te recomendamos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

Lo he hecho usando GreenMail. Eche un vistazo a mi publicación de blog al respecto, donde también encontrará un ejemplo de trabajo.

Puede usar un servidor SMTP de prueba, como Dombster. Vea el ejemplo a continuación:

@Test
    public void sendSimpleEmailWithCC() 
        // Runs a Dumbster simple SMTP server - default config
        SimpleSmtpServer server = SimpleSmtpServer.start();
        String from = "[email protected]";
        String to = "[email protected]";
        String messageText = "Good message";
        String title = "Test message";
        String cc = "[email protected]";
        Assert.assertTrue(mailSender
                .sendEmail(from, to, cc, title, messageText));
        server.stop();
        Assert.assertTrue(server.getReceivedEmailSize() == 1);
        Iterator emailIter = server.getReceivedEmail();
        SmtpMessage email = (SmtpMessage) emailIter.next();
        Assert.assertTrue(email.getHeaderValue("From").equals(from));
        Assert.assertTrue(email.getHeaderValue("To").equals(to));
        Assert.assertTrue(email.getHeaderValue("Cc").equals(cc));
        Assert.assertTrue(email.getHeaderValue("Subject")
                .equals("Test message"));
        Assert.assertTrue(email.getBody().equals(messageText));
    

Si su objetivo es usar solo Junit/Mockito y probar cómo se formó MimeMessage antes de enviarlo, la siguiente configuración debería ser suficiente:

public class EmailServiceTest 

    private EmailServiceImpl emailServiceImpl;

    private JavaMailSender javaMailSender;

    private MimeMessage mimeMessage;

    @Before
    public void before() 
        mimeMessage = new MimeMessage((Session)null);
        javaMailSender = mock(JavaMailSender.class);
        when(javaMailSender.createMimeMessage()).thenReturn(mimeMessage);
        emailServiceImpl = new EmailService(javaMailSender);
    

    @Test
    public void emailTest() 
        String recipient = "[email protected]"
        EmailRequest request = new EmailRequest();
        request.setRecipient(recipient);
        emailServiceImpl.send(request);
        assertEquals(recipient, mimeMessage.getRecipients(RecipientType.TO)[0].toString());
    

No se te olvide dar difusión a esta crónica si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *