Метод @Before Mockito вызывается после @PostConstruct - PullRequest
0 голосов
/ 07 февраля 2019

Это мой упрощенный код:

@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?

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Использование @TestConfiguration вместо использования @MockBean может помочь решить эту проблему.

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

И аннотирование класса теста с помощью @ ContextConfiguration

@ContextConfiguration(classes = TestClassName.Configuration.class)
0 голосов
/ 07 февраля 2019

Возможно, это не самый элегантный обходной путь, но вы можете посмеяться над поведением внутри статического блока.Код в статическом блоке выполняется до @Before и @PostConstruct.Я не думаю, что насмешка с использованием аннотаций (@MockBean) будет работать, но это также может быть сделано программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...