Spring cloud stream - интеграционные тесты, подписчики не слушают события - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь настроить интеграционный тест с потоком весеннего облака.

Допустим, мне нужно протестировать следующий поток интеграции

  1. Создать объект с запросом POST
  2. опубликовать событие внутри с помощью брокера сообщений
  3. Собрать событие в том же микросервисе и обновить внутреннюю модель чтения
  4. Сделать GET-запрос к конечной точке модели чтения и проверить, является ли чтениеМодель была обновлена ​​

Обновление прочитанной модели работает асинхронно.Он отлично работает при запуске приложения (события собираются и потребляются), он не работает, когда я запускаю интеграционные тесты.Метод, помеченный @StreamListener, просто не вызывается во время выполнения тестов, приложение не подключается к брокеру сообщений (в моем случае это kafka)

Я использовал spring-cloud-stream-test-support и MessageCollector, но этодает мне возможность проверить, было ли событие опубликовано, и проверить его полезную нагрузку.

Мне нужно проверить, собрало ли приложение событие и правильно ли на него отреагировало.

Чего мне не хватает?Существует ли какая-либо привязка к тесту, на которую подписывается приложение во время выполнения теста?

1 Ответ

0 голосов
/ 04 декабря 2018

При использовании связывателя тестов связыватель тестов переопределяет связыватель Kafka по умолчанию.

Чтобы запустить интеграционные тесты в том же проекте, что и модульные тесты, необходимо настроить тест на использование реального связывателя с помощьюисключая TestSupportBinderAutoConfiguration.

Для глобального исключения см. документы SCSt .

Для исключения в отдельных тестах см. Загрузочные документы .

Наконец, вы также можете управлять списком классов автоконфигурации, которые нужно исключить, используя свойство spring.autoconfigure.exclude.

например, в @TestPropertySource.

...