Как протестировать классы с помощью StreamBridge в Spring Cloud Stream?

#spring-cloud-stream

Вопрос:

У меня есть класс, который вводит StreamBridge для отправки иногда некоторых событий. Тесты, в которых используется этот класс, завершаются неудачно, потому что не существует компонента. Я пытался

@Мокбин Стримбридж Стримбридж

это с помощью Mockito, но это не удается из-за некоторого статического содержимого. Пытался использовать

 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-stream</artifactId>
    <version>${spring.cloud.stream.version}</version>
    <type>test-jar</type>
    <scope>test</scope>
    <classifier>test-binder</classifier>
</dependency>
 

но это не помогло. Я тоже пытался

 @ImportAutoConfiguration(TestChannelBinderConfiguration.class)
 

но конфигурация Testchannelbindercon тоже не существует.

Есть идеи, как я могу сделать этот мост доступным для тестов?

Комментарии:

1. ошибка: Вызвана: org.springframework.beans.factory. Исключение NoSuchBeanDefinitionException: Нет квалифицирующего компонента типа ‘org.springframework.cloud.stream.функция. Доступен StreamBridge: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат на автоматическое подключение. Аннотации зависимостей: {}

2. Похоже, эта комбинация сделала свое дело: @ComponentScan({«org.springframework.cloud.stream.binder.test»}) @Импорт(TestChannelBinderConfiguration.class)

Ответ №1:

Взгляните на эти тесты, чтобы увидеть, как StreamBridge тестируется в рамках: https://github.com/spring-cloud/spring-cloud-stream/blob/main/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/StreamBridgeTests.java

Комментарии:

1. Я не хочу тестировать StreamBridge. Я хочу поиздеваться над этим, просто чтобы удовлетворить зависимость. Я видел этот пример, но он не помогает. Он не подключается автоматически, он считывает StreamBridge из контекста, но я не понимаю, как он был создан в контексте.