16

JavaMailSender を注入したサービスがあります。私のサービスはそれを構成し、メールを送信します。生メールを傍受して、情報が正しいことを確認したい. JUnitでそれをやりたいです。

どうやってそれをしますか?

@Service
public class MyServiceImpl {

    @Autowired
    private JavaMailSender _mailSender;

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

4 に答える 4

24

GreenMailを使用して実行しました。それについての私のブログ投稿を見てください。そこでは、実際の例も見つけることができます。

于 2013-05-31T10:23:28.813 に答える
2

Junit/Mockito のみを使用し、送信前に MimeMessage がどのように形成されたかをテストすることが目標である場合は、以下の構成で十分です。

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 = "example@example.com"
        EmailRequest request = new EmailRequest();
        request.setRecipient(recipient);
        emailServiceImpl.send(request);
        assertEquals(recipient, mimeMessage.getRecipients(RecipientType.TO)[0].toString());
    }
}
于 2019-02-23T00:12:23.273 に答える