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.

No se puede simular un método estático que devuelve un valor booleano.

He escrito lo siguiente para simular una clase llamada ValidatorUtil que está siendo utilizada en una prueba para validar una cadena, por lo que he escrito que ValidatorUtil siempre debe devolver true, pero está devolviendo false. Siempre y termina llamando efectivamente al método isValid de ValidatorUtil que devuelve el resultado como false. He intentado con todos los identificadores como Mockito.any() y Mockito.any(Configurator.class), pero sin suerte. Por favor, ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el fragmento de código proporcionado, parece que el problema radica en la implementación del método isValid en ValidatorUtil en sí mismo. Dado que ya has simulado la clase ValidatorUtil y definido su comportamiento, no debería llamar al método real durante la prueba.

    Aquí hay algunas posibles razones por las que podría estar sucediendo:

    1. El método isValid en ValidatorUtil no es estático: La clase MockedStatic se utiliza para simular clases y métodos estáticos. Si el método isValid en ValidatorUtil no es un método estático, entonces la simulación no funcionará como se espera. En ese caso, puedes usar Mockito.mock() para simular el objeto ValidatorUtil y definir su comportamiento.
    2. El objeto configurator que se pasa al método isValid no coincide con el objeto esperado: El comportamiento que has definido usando theMock.when(() -> ValidatorUtil.isValid(configurator)).thenReturn(true) solo funcionará cuando se llame al método isValid con el mismo objeto configurator que usaste en la condición when. Intenta usar un matcher como Mockito.eq(configurator) en lugar de configurator directamente.

    3. Hay otra llamada al método isValid en el código que no está siendo simulada: Asegúrate de que no hay otras llamadas al método isValid en tu código que no estén siendo simuladas. Si las hay, entonces se llamará al método real en lugar de la simulación, y el comportamiento que definiste no será efectivo.

    Es difícil identificar la causa exacta del problema sin ver el código completo. Sin embargo, espero que estas sugerencias te ayuden a identificar el problema y encontrar una solución.

Comments are closed.