2013-05-31 13 views
8

Mam usługę, która wstrzyknęła JavaMailSender. Moja usługa konfiguruje i wysyła wiadomość e-mail. Chciałbym przechwycić surową pocztę, aby upewnić się, że informacje są poprawne. Chciałbym to zrobić w JUnit.Jak przetestować JavaMailSender of Spring

Jak byście to zrobili?

Odpowiedz

4

Można użyć testowego serwera SMTP, na przykład Dumbster. Zobacz przykład poniżej:

@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

Nie używaj proszę. Jest okropnie zepsuty: http://sourceforge.net/p/dumbster/bugs/15/. Zamiast tego użyj e-mail. –