Это мой упрощенный код:
@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
}
}
Моя проблема в том, что мне нужно заглушить MyBean
методы, прежде чем любой другой класс, имеющий этот объект с автопроводкой, запустит метод @BeforeClass
.Прямо сейчас метод @Before
выполняется после @PostConstruct
любого класса, который автоматически связывает этот компонент (их больше одного).
MyBean автоматически подключается как макет, но метод не заглушается, поэтому я получаю: «SmartNull возвращается при этом вызове unstubbed метода на макете:«
Есть ли способ установить приоритетmocked bean в инициализации контейнера Spring?