es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para la Clase ConfigProvider de Mocking

    Cuando intentas hacer un mock de la clase ConfigProvider usando Mockito, es posible que te encuentres con una excepción que dice org.mockito.exceptions.base.MockitoException no puede hacer mock/spy de org.eclipse.microprofile.config.ConfigProvider. Esto se debe a que Mockito no puede hacer mock de métodos estáticos o clases finales, y ConfigProvider es una clase final con métodos estáticos.

    Para resolver este problema, puedes utilizar PowerMockito en lugar de Mockito estándar. PowerMockito es una extensión de Mockito que te permite hacer mock de métodos estáticos y clases finales. Aquí te mostramos cómo puedes hacer mock de la clase ConfigProvider usando PowerMockito:

    1. Primero, agrega las siguientes dependencias a tu proyecto:
    <dependency>
        <groupid>org.powermock</groupid>
        <artifactid>powermock-module-junit4</artifactid>
        <version>2.0.9</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupid>org.powermock</groupid>
        <artifactid>powermock-api-mockito2</artifactid>
        <version>2.0.9</version>
        <scope>test</scope>
    </dependency>
    
    1. Luego, anota tu clase de prueba con @RunWith(PowerMockRunner.class) y @PrepareForTest(ConfigProvider.class):
    @RunWith(PowerMockRunner.class)
    @PrepareForTest(ConfigProvider.class)
    public class MyTest {
        // ...
    }
    
    1. Por último, utiliza el método mockStatic de PowerMockito para hacer mock de la clase ConfigProvider y devolver un valor de configuración falso:
    @Test
    public void testMyMethod() {
        // Hacer mock del valor de configuración
        String valorConfiguracion = "http://localhost:8080";
        PowerMockito.mockStatic(ConfigProvider.class);
        Mockito.when(ConfigProvider.getConfig().getValue("myproject.some.remote.service.url", String.class)).thenReturn(valorConfiguracion);
    
        // Prueba tu método
        // ...
    
        // Verifica que el método se comporte como se espera
        // ...
    }
    

    Con estos pasos, deberías poder hacer mock de la clase ConfigProvider y probar tu código correctamente.

Comments are closed.