Maison  >  Article  >  Java  >  Comment renvoyer un argument à une méthode simulée dans Mockito ?

Comment renvoyer un argument à une méthode simulée dans Mockito ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-23 22:13:02687parcourir

How to Return an Argument to a Mocked Method in Mockito?

Comment faire en sorte qu'une méthode simulée renvoie un argument qui lui est transmis à l'aide de Mockito

Mockito est un framework de simulation Java qui permet la création d'objets simulés à des fins de test. Les méthodes moqueuses permettent de tester le code indépendamment de ses dépendances. Dans ce scénario, nous souhaitons simuler une méthode pour renvoyer une valeur qui lui a été transmise lors de l'appel de la méthode.

Solution :

Depuis la version 1.9.5 de Mockito et Java 8, les expressions lambda peuvent être utilisées pour obtenir la fonctionnalité souhaitée. Voici comment :

<code class="java">when(myMock.myFunction(anyString())).thenAnswer(i -> i.getArguments()[0]);</code>

Dans cette expression lambda, i représente une instance de InvocationOnMock et i.getArguments()[0] récupère le premier argument passé à la méthode simulée.

Solution alternative pour les anciennes versions :

Pour les anciennes versions de Mockito, une réponse peut être implémentée pour obtenir le même résultat. Voici un exemple :

<code class="java">when(mock.myFunction(anyString())).thenAnswer(new Answer<String>() {
    @Override
    public String answer(InvocationOnMock invocation) throws Throwable {
        Object[] args = invocation.getArguments();
        return (String) args[0];
    }
});</code>

Dans cette implémentation de Answer, le tableau d'arguments est récupéré de l'instance InvocationOnMock et le premier argument (chaîne) est renvoyé.

En utilisant ces méthodes, vous pouvez configurez les méthodes simulées dans Mockito pour renvoyer des valeurs basées sur les arguments qui leur sont transmis, permettant ainsi des scénarios de test plus flexibles et plus réalistes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn