在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来测试邮件发送功能了。