2013-05-31 9 views
8

Ho un servizio che ha iniettato JavaMailSender. Il mio servizio lo configura e invia una mail. Vorrei intercettare la posta non elaborata per garantire che le informazioni siano corrette. Mi piacerebbe farlo in un JUnit.Come testare JavaMailSender di Spring

Come vorresti farlo?

@Service 
public class MyServiceImpl { 

    @Autowired 
    private JavaMailSender _mailSender; 

    public void sendMail(String to, String body, String subject){ 
     ... 
     _mailSender.something 
     ... 
    } 
} 

risposta

4

È possibile utilizzare un server SMTP di prova, ad esempio Dumbster. Vedere l'esempio di seguito:

@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)); 
    } 
+0

Non utilizzare l'utente per favore. È orribilmente rotto: http://sourceforge.net/p/dumbster/bugs/15/. Usa invece la greenmail. –

Problemi correlati