CodeGym/Cursos Java/Módulo 3. Java Professional/Escenarios populares para trabajar con Mockito

Escenarios populares para trabajar con Mockito

Disponible

6.1 Burlándose del método estático mockStatic()

Y un punto más importante es la burla y verificación de métodos estáticos. “¿Qué hay de malo en eso?”, preguntas. Sí, estático, pero los métodos son los mismos. Y te equivocarás.

¿Recuerdas dónde empezamos a aprender sobre objetos simulados? Dado que estos objetos se crean artificialmente a través de DynamicProxy. Y los métodos estáticos no están vinculados a ningún objeto y DynamicProxyes imposible interceptar llamadas a través de ellos . Eso es todo.

Pero los creadores de Mockito también pudieron esquivar aquí: escribieron su propio cargador de clases y con su ayuda pudieron reemplazar las clases sobre la marcha. Un trabajo grande y difícil, pero aun así lograron hacerlo.

Deberá agregar una biblioteca adicional a pom.xml:

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

Así es como funciona si necesita simular un método estático.

1 Cree un objeto de clase simulada especial:

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

2 Agregue reglas de operación a este objeto:

A este objeto de la regla es necesario aferrarse de otras maneras.

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

3 Asegúrese de incluir el uso de este objetotry-with-resources para que se elimine inmediatamente y Mockito pueda borrar las reglas asociadas con él.

Ejemplo:

@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());
    }
}

No tan bonito como con anotaciones @Mocky @Spy, pero muy práctico. Era muy difícil escribir pruebas cuando era imposible simular un método estático simple que se usaba dentro de los métodos bajo prueba.

Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios