Использование смоделированного объекта в реальном приложении (не тест) - PullRequest
1 голос
/ 27 марта 2019

Это мой первый вопрос здесь!Я пытаюсь использовать IBM MQ API (allclient) в моем приложении для весенней загрузки, однако у меня нет MQ, доступного во всех средах.Я сконфигурировал Spring для создания bean-компонента MQQueueManager, который прекрасно работает, когда у меня запущен настоящий администратор очередей, но когда у меня его нет, я не могу запустить свое приложение.Я хотел удалить зависимость MQQueueManager из моего приложения на случай, если у меня / других нет диспетчера очереди.

Чтобы добавить к этой проблеме, этот bean-компонент внедряется в другой bean-компонент, поэтому удаление класса конфигурации MQQueueManager все равно сломает мой другой bean-компонент.

Я попробовал приведенный ниже код, который я бы, хотя бы, загружал Mock bean вместо реального bean.

src / main / java / com / app / config

@Configuration 
@Profile("development")
public class MqConfig { 

    @Bean 
    public MQQueueManager connectToQueue(){
      //connection to real QMGR 
     }

}

src / test / java / com / app / config

@Configuration 
@Profile("test")
public class MqConfig { 

    @Bean
    public MQQueueManager connectToQueue(){
      return Mockito.mock(MQQueueManager.class); 
     }

}

Spring не можетнайдите все компоненты MQQueueManager, чтобы приложение не запускалось.

1 Ответ

0 голосов
/ 27 марта 2019

Spring-boot имеет условный впрыск.Существует множество аннотаций, которые можно использовать для условного внедрения бинов.Я думаю, это то, что вы пытаетесь сделать.Некоторое объяснение вы можете найти здесь: https://iamninad.com/conditional-bean-creation-in-spring-boot/ и здесь: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html.

Вы не должны пытаться использовать Mockito вне области тестирования приложения.Mockito (и JUnit) - это фреймворки для тестирования, а не для производственного кода.

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