jeudi 23 février 2023

[Mockito] thenReturn vs thenAnswer

 tableau comparatif :

FonctionnalitéthenReturnthenAnswer
Syntaxewhen(mock.method()).thenReturn(value);when(mock.method()).thenAnswer(answer);
Renvoyer une valeurOuiOui
Répondre avec lambdaNonOui
ExceptionsthenThrow(Exception.class)thenThrow(Exception.class)
Vérification des appels de méthodeverify(mock).method()verify(mock, times(1)).method()
Vérification des paramètresverify(mock).method(expectedParam)verify(mock).method(argThat(matcher))
Utilisation pour les mock finauxNonOui
Possibilité de retourner des valeurs en fonction des argumentsNonOui
Risque de NullPointerException si la méthode mockée renvoie nullOuiNon
Erreurs d'utilisation potentiellesRetourne toujours la même valeur, peu utile pour des méthodes avec des effets de bordPeut être plus difficile à comprendre pour les débutants, risque de dépasser la portée des tests unitaires
Exempleswhen(mock.getAge()).thenReturn(25);when(mock.getAge()).thenAnswer(i -> 25);
Vérification des appels de méthode avec des paramètresverify(mock).setAge(25);verify(mock).setAge(argThat(matcher))

Note :

Aucun commentaire:

Enregistrer un commentaire

to criticize, to improve