我有以下@Service
用于接收反馈的类,根据标准列表验证其详细信息。如果经过验证,请将其发送给其收件人。
我正在努力为这个类编写一个测试用例。我知道没有必要使用 Junit 测试外部服务。就像在我的情况下发送电子邮件但是,
- 测试这个类的最佳方法是什么?
- 我什至应该测试它吗?
- 如果不是为什么?
- 如果是,如何完成测试用例?
代码
@Service
public class FeedbackServiceImpl implements FeedbackService {
@Autowired
private MailSender mailSender;
@Override
public boolean sendIt(Feedback feedback)
throws MailAuthenticationException, CustomException {
validateEmail(feedback.getEmail());
try {
SimpleMailMessage message = new SimpleMailMessage();
switch (feedback.getRecipient()) {
case 1:
message.setTo("jack@project.com");
break;
case 2:
message.setTo("norman@project.com");
break;
default:
message.setTo("hello@project.com");
break;
}
message.setCc(feedback.getEmail());
message.setSubject(subject);
message.setText(msg);
mailSender.send(message);
} catch (MailSendException send) {
System.err.println(send.getFailedMessages() + " "
+ send.getMessage() + " " + feedback);
}
return true;
}
private void validateEmail(String sender) throws CustomException {
//make sure provided email is valid
//this method does verification process against different criteria
}
}
JUnit
@Test
public void shouldReturnFalseForInvalidFeedbackEmail(){
MailSender mailSender = Mockito.mock(MailSender.class);
FeedbackService feedbackSrv = new FeedbackServiceImpl();
boolean result = feedbackSrv.sendIt(feedback);
assertTrue(result);
}