je suit @Service
classe qui est utilisée pour recevoir des commentaires, vérifiez les détails sur la base d'une liste de critères. S'il est vérifié, envoyez-le à son destinataire.Je ne sais pas comment tester une classe email a reçu des commentaires
Je me bats pour écrire un test pour cette classe. Je sais qu'il n'est pas nécessaire de tester les services externes en utilisant Junit. Comme l'envoi d'e-mail dans mon cas, mais,
- Quelle est la meilleure approche pour tester cette classe?
- Dois-je même le tester?
- Sinon pourquoi?
- Si oui comment compléter le cas de test?
code
@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("[email protected]");
break;
case 2:
message.setTo("[email protected]");
break;
default:
message.setTo("[email protected]");
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);
}
Je voudrais utiliser un faux et vérifier que 1/le message est correctement envoyé (c'est-à-dire si le destinataire est 1, envoyé à jack etc.) 2/MailSendException est correctement géré 3/make 'validateEmail'' protected' et le tester. NB: il est étrange que la méthode 'sendIt' retourne toujours vrai. –
@Rc Si quelque chose ne va pas, il lève une exception donc, il retourne juste vrai. Connaissez-vous d'autres approches? Comment tester MailSendException? cette exception n'est transmise que si MailSender ne peut pas envoyer l'e-mail. – Jack
http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html pourrait être intéressant à lire (il y a un 'doThrow()') –