2013-05-31 31 views
8

Tôi có một dịch vụ đã tiêm JavaMailSender. Dịch vụ của tôi định cấu hình và gửi thư. Tôi muốn chặn thư thô để đảm bảo thông tin là chính xác. Tôi muốn làm điều đó trong một JUnit.Làm cách nào để kiểm tra JavaMailSender của Spring

Các bạn sẽ làm như thế nào?

@Service 
public class MyServiceImpl { 

    @Autowired 
    private JavaMailSender _mailSender; 

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

Trả lời

4

Bạn có thể sử dụng máy chủ SMTP thử nghiệm, như Dumbster. Xem ví dụ bên dưới:

@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

Không sử dụng dumbster. Nó bị hỏng nặng: http://sourceforge.net/p/dumbster/bugs/15/. Sử dụng greenmail để thay thế. –

Các vấn đề liên quan