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;
	}
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());
	}
Et la méthode getByAdresseMail(mail)
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));
	}
Merci.