Весенние тесты - используйте настоящий боб для создания тестового бина - PullRequest
0 голосов
/ 25 февраля 2019

Я использую Spring и создал тест, который загружает контекст с помощью SpringRunner.

У меня есть bean-компонент, который выглядит следующим образом:

@Bean
public Properties kafkaStreamsProperties(){
    final Properties props = new Properties();
    props.put("A", "B");
    props.put("C", "D");

    return props;
}

Я хотел бы расширить его в своемтестирование также содержит свойство "E" -> "F".

Я легко могу сделать это во внутреннем классе @TestConfiguration следующим образом:

public class test{
    public static class MyConfig{
        @Bean
        public Properties kafkaStreamsProperties(){
            final Properties props = new Properties();
            props.put("A", "B");
            props.put("C", "D");
            props.put("E", "F");
            return props;
        }
    }
}

Но потом, когда я изменяюпроизводственный код, мне придется «помнить» об изменении теста тоже.Есть ли способ, которым я могу получить фактический бин из контекста и «заменить» его моим (используя реальный)?

1 Ответ

0 голосов
/ 25 февраля 2019

В тесте Spring у вас есть @ MockBean для насмешки bean-компонента или @SpyBean для отслеживания bean-компонента:

Spring Boot включает аннотацию @MockBean, которую можно использовать дляОпределите макет Mockito для bean-компонента внутри вашего ApplicationContext.Вы можете использовать аннотацию для добавления новых bean-компонентов или замены одного существующего определения bean-компонента.

Кроме того, вы можете использовать @SpyBean, чтобы обернуть любой существующий бин шпионом Mockito

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