Spring Boot

spring boot junit如何测试邮件发送

小樊
85
2024-07-22 09:10:58
栏目: 编程语言

在Spring Boot中,可以使用Mockito来模拟邮件发送功能,并使用JUnit来编写测试用例。下面是一个简单的示例:

首先,在Spring Boot项目中添加相关依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>3.11.0</version>
    <scope>test</scope>
</dependency>

然后编写一个邮件发送服务:

@Service
public class EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendEmail(String to, String subject, String body) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(body);
        javaMailSender.send(message);
    }
}

接下来编写一个测试用例:

@RunWith(MockitoJUnitRunner.class)
public class EmailServiceTest {

    @Mock
    private JavaMailSender javaMailSender;

    @InjectMocks
    private EmailService emailService;

    @Test
    public void testSendEmail() {
        emailService.sendEmail("test@example.com", "Test Subject", "Test Body");

        ArgumentCaptor<SimpleMailMessage> captor = ArgumentCaptor.forClass(SimpleMailMessage.class);
        verify(javaMailSender).send(captor.capture());

        SimpleMailMessage message = captor.getValue();
        assertEquals("test@example.com", message.getTo()[0]);
        assertEquals("Test Subject", message.getSubject());
        assertEquals("Test Body", message.getText());
    }
}

在上面的测试用例中,我们使用Mockito来模拟JavaMailSender并验证发送邮件的行为。通过ArgumentCaptor来捕获发送的邮件内容,并进行断言验证。

这样就可以使用JUnit来测试邮件发送功能了。

0
看了该问题的人还看了