CodeGym/Cours Java/Module 3/Scénarios populaires pour travailler avec Mockito

Scénarios populaires pour travailler avec Mockito

Disponible

6.1 Se moquer de la méthode statique mockStatic()

Et un autre point important est la moquerie et la vérification des méthodes statiques. "Qu'est-ce qui ne va pas avec ça?", demandez-vous. Oui, statique, mais les méthodes sont les mêmes. Et vous aurez tort.

Rappelez-vous où nous avons commencé à apprendre les objets fictifs ? Étant donné que ces objets sont créés artificiellement via le DynamicProxy. Et les méthodes statiques ne sont liées à aucun objet et DynamicProxyil est impossible d'intercepter leurs appels via . C'est tout.

Mais les créateurs de Mockito ont pu esquiver ici aussi - ils ont écrit leur propre chargeur de classe et avec son aide, ils ont pu remplacer les classes à la volée. Un travail important et difficile, mais ils ont quand même réussi à le faire.

Vous devrez ajouter une bibliothèque supplémentaire pour pom.xml:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

Voici comment procéder si vous avez besoin de vous moquer d'une méthode statique.

1 Créez un objet de classe mock spécial :

MockedStatic<ClassName>managerObject = Mockito.mockStatic(ClassName.class);

2 Ajoutez des règles de fonctionnement à cet objet :

A cet objet de la règle, il faut s'attacher par d'autres moyens.

managerObject.when(ClassName::method name).thenReturn(result);

3 Assurez-vous d'envelopper l'utilisation de cet objettry-with-resources afin que l'objet soit immédiatement supprimé et que Mockito puisse effacer les règles qui lui sont associées.

Exemple:

@Test
void givenStaticMethodWithNoArgs () {
    try (MockedStatic< StaticUtils> utilities =  Mockito.mockStatic( StaticUtils.class)) {
        // add rule
         utilities.when(StaticUtils::name).thenReturn("Hello");

        // check if the rule works
        assertEquals("Hello", StaticUtils.name());
    }
}

Pas aussi beau qu'avec les annotations @Mocket @Spy, mais très pratique. Il était très difficile d'écrire des tests alors qu'il était impossible de se moquer d'une méthode statique simple utilisée à l'intérieur des méthodes testées.

Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires