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 de enum con parámetro nulo.

Estoy tratando de simular un método estático de un enum que tiene un valor nulo como se muestra a continuación:

 try (MockedStatic<SomEnum> e = Mockito.mockStatic(SomEnum.class)) {
            e.when(() -> SomEnum.methodWhichAcceptingNullParam(any())).thenReturn(somValue);
        }

Aquí, el cualquier() no está funcionando… no estoy seguro de si estoy pasando un parámetro nulo dentro del método.

methodWhichAcceptingNullParam

He intentado tanto con cualquier como con isNull. El hecho es que siempre se llama a SomEnum.methodWhichAcceptingNullParam, aunque no debería ser así porque ya he proporcionado un valor simulado.

¿Alguna ayuda?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar con el valor nulo que se pasa como parámetro al método methodWhichAcceptingNullParam. al momento de simular métodos estáticos usando Mockito y MockedStatic, es importante asegurarse de que todos los parámetros que se pasan al método que se está simulando también estén siendo correctamente simulados, de lo contrario, es posible que el método original aún se llame.

    En este caso, dado que el parámetro que se está pasando es nulo y es posible que no esté siendo correctamente simulado con any(), intenta pasar explícitamente un valor nulo dentro de la declaración thenReturn como se muestra a continuación:

    try (MockedStatic<somenum> e = Mockito.mockStatic(SomEnum.class)) {
        e.when(() -> SomEnum.methodWhichAcceptingNullParam(isNull())).thenReturn(somValue);
    }
    

    Además, verifica que el método methodWhichAcceptingNullParam realmente se esté llamando con un valor nulo y no se esté llamando en otra parte del código con un valor no nulo.

    Si el problema aún persiste, puede ser útil depurar y rastrear el código para determinar exactamente dónde se está llamando al método original y ajustar la simulación en consecuencia.

Comments are closed.