IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

Wrong type of return value avec un optional [JUnit]


Sujet :

Tests et Performance Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut Wrong type of return value avec un optional
    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.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 32
    Points
    32
    Par défaut
    je vais me répondre, je ne faisais pas mockito au bon niveau. Au lieu de faire mon mockito sur getByAdresseMail qui pouvait être optional, il fallait que je le fasse à l'intérieur de cette méthode, au niveau du return:
    when(adresseMailDao.findByAdresseMailAndDateSuppressionIsNull(anyString())).thenReturn(adresseMail);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche avec Locate option lopartialKey
    Par jeje.r dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/12/2022, 10h56
  2. Return value avec Node.js / socket.on
    Par teddol dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/06/2017, 14h25
  3. Arguments wrong type lorsque update db
    Par NeHuS dans le forum ASP
    Réponses: 9
    Dernier message: 22/04/2005, 11h33
  4. wcout, wofstream, etc. : types de la STL, avec Dev-C++
    Par forum-dev dans le forum Dev-C++
    Réponses: 3
    Dernier message: 01/03/2005, 23h03
  5. Problème avec l'option -static de gcc
    Par lsdInside dans le forum Linux
    Réponses: 2
    Dernier message: 08/05/2004, 01h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo