Bonjour,
Je souhaite tester la méthode recupererAjouterAdresseMail avec JUnit, et je n'arrive pas à rentrer dans la condition " (adresseMail.getRepresentant() == null) " pour la tester. J'ai une erreur wrong type of return value lorsque j'utilise mockito pour simuler la réponse lors de l'appel de getByAdresseMail(email) qui est un Optional.
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
Optional cannot be returned by findByAdresseMailAndDateSuppressionIsNull()
findByAdresseMailAndDateSuppressionIsNull() should return AdresseMail
***
If you're unsure why you're getting above error read on.
Due to the nature of the syntax above problem might occur because:
1. This exception *might* occur in wrongly written multi-threaded tests.
Please refer to Mockito FAQ on limitations of concurrency testing.
2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
- with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.
at com.afone.ppm.service.AdresseMailServiceTest.recupererAjouterAdresseMailTest(AdresseMailServiceTest.java:134)
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public AdresseMail recupererAjouterAdresseMail(String email, Representant representant) throws ServiceException { email = StringUtils.lowerCase(email); if (StringUtils.isBlank(email)) throw new ParamIncorrectException(); AdresseMail adresseMail = getByAdresseMail(email).orElse(creer(email, representant)); if (adresseMail.getRepresentant() == null) { setRepresentant(adresseMail, representant); } else if (adresseMail.getRepresentant() != null && !adresseMail.getRepresentant().equals(representant)) { throw new ParamIncorrectException(CodeRetour.C004); } return adresseMail; }Et la méthode getByAdresseMail(mail)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @Mock AdresseMail adresseMail; @Mock Representant representant; @InjectMocks AdresseMailService adresseMailServiceInjectMocks; @Test public void recupererAjouterAdresseMailTest() throws ServiceException { when(adresseMailServiceInjectMocks.getByAdresseMail("mail@mail.com")) .thenReturn(Optional.ofNullable(adresseMail));==> 134 doCallRealMethod().when(adresseMail).getRepresentant(); adresseMail = adresseMailServiceInjectMocks.recupererAjouterAdresseMail("mail@mail.com", representant); assertNotNull(adresseMail.getRepresentant()); }
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public Optional<AdresseMail> getByAdresseMail(String email) { email = StringUtils.lowerCase(email); if (StringUtils.isBlank(email)) return Optional.empty(); return Optional.ofNullable(adresseMailDao.findByAdresseMailAndDateSuppressionIsNull(email)); }
Partager