Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
El método Mockito @Before se llama después de @PostConstruct

Este es mi código simplificado:

 @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class MockitoSpringBootTest { @MockBean private MyBean myBean; @Before private void before(){ Mockito.when(myBean.getSomeString()).thenReturn("TEST")); } } @Service private class TestClass { @Autowired private MyBean myBean; @PostConstruct public void initialize() { myBean.getSomeString(); //SmartNull - method is not stubbed yet } }

Mi problema es que necesito agregar métodos MyBean , antes de que cualquier otra clase que tenga este objeto autoconectado ejecute el método @BeforeClass . En este momento, el método @Before se ejecuta después de @PostConstruct de cualquier clase que esté autoconectando este bean (hay más de uno).

MyBean está autoconectado como un simulacro, pero el método no está bloqueado, por lo que obtengo: "SmartNull devuelto por esta llamada al método no bloqueado en un simulacro:"

¿Hay alguna forma de establecer la prioridad del frijol simulado en la inicialización del contenedor Spring?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Usar @TestConfiguration en lugar de usar @MockBean podría ayudar a resolver este problema.

 @TestConfiguration static class Configuration { @Bean public BeanToMock name() { // return mock object } }

Y anotando la clase de prueba con @ContextConfiguration :

 @ContextConfiguration(classes = TestClassName.Configuration.class)
over 4 years ago · Santiago Trujillo Denunciar

0

Tal vez no sea la solución más elegante, pero puede simular el comportamiento dentro de un bloque estático. El código en el bloque estático se ejecuta antes que @Before y @PostConstruct . No creo que la burla usando anotaciones ( @MockBean ) funcione, pero también se puede hacer mediante programación.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda