Spring Cloud Contract для Webflux Reactive API
Я пытаюсь применить Spring Cloud Contract к Reactive API, созданному с использованием Spring Webflux. В основном можно отправлять Flux и получать ответ Flux от API в стиле:
@RequestMapping("/endlessecho")
public Flux<String> endlessEcho(Flux<String> input) {
return input;
}
Однако я не могу найти в Интернете или в документации информацию о том, могу ли я сделать это с помощью Spring Cloud Contract.
Можно ли даже написать контракт для этого? Сможет ли он подать проволоку и генерировать соответствующие тесты JUnit?
1 ответ
С помощью этого коммита ( https://github.com/spring-cloud-samples/spring-cloud-contract-samples/commit/f7030148a9337d4c7184f7c8e27c271d9b89681b) я добавил пример WebFlux в примеры Spring Cloud COntract.
Достаточно определить контракт как обычно, передать EXPLICIT
режим для testMode
параметр в настройке плагина. Вместо RestASsuredMockMvc
Вы должны использовать стандарт RestAssured
статический URI
поле для настройки URI приложения, которое использует WebFlux
, Вам нужно настроить весь Spring Context и привязать к порту, и это почти все.
В проекте под названием consumer
есть тест, который использует заглушки из producer-webflux
проект. С точки зрения бегуна заглушки, нет никаких изменений в том, как заглушки запускаются.