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.
davy.ai
Basado en el fragmento de código proporcionado, parece que el problema radica en la implementación del método
isValid
enValidatorUtil
en sí mismo. Dado que ya has simulado la claseValidatorUtil
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:
isValid
enValidatorUtil
no es estático: La claseMockedStatic
se utiliza para simular clases y métodos estáticos. Si el métodoisValid
enValidatorUtil
no es un método estático, entonces la simulación no funcionará como se espera. En ese caso, puedes usarMockito.mock()
para simular el objetoValidatorUtil
y definir su comportamiento.El objeto
configurator
que se pasa al métodoisValid
no coincide con el objeto esperado: El comportamiento que has definido usandotheMock.when(() -> ValidatorUtil.isValid(configurator)).thenReturn(true)
solo funcionará cuando se llame al métodoisValid
con el mismo objetoconfigurator
que usaste en la condiciónwhen
. Intenta usar un matcher comoMockito.eq(configurator)
en lugar deconfigurator
directamente.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étodoisValid
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.