Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!