diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java index 309055fae3..7daefdc7b2 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java @@ -52,20 +52,28 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder { private Duration responseTimeout; + /** Connect to server via Reactor Netty */ DefaultWebTestClientBuilder() { - this(null, null, new ReactorClientHttpConnector(), null); + this(new ReactorClientHttpConnector()); } + /** Connect to server through the given connector */ + DefaultWebTestClientBuilder(ClientHttpConnector connector) { + this(null, null, connector, null); + } + + /** Connect to given mock server with mock request and response */ DefaultWebTestClientBuilder(WebHttpHandlerBuilder httpHandlerBuilder) { this(null, httpHandlerBuilder, null, null); } + /** Copy constructor */ DefaultWebTestClientBuilder(DefaultWebTestClientBuilder other) { this(other.webClientBuilder.clone(), other.httpHandlerBuilder, other.connector, other.responseTimeout); } - DefaultWebTestClientBuilder(@Nullable WebClient.Builder webClientBuilder, + private DefaultWebTestClientBuilder(@Nullable WebClient.Builder webClientBuilder, @Nullable WebHttpHandlerBuilder httpHandlerBuilder, @Nullable ClientHttpConnector connector, @Nullable Duration responseTimeout) { diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java index b014d67343..ccc237df6b 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java @@ -33,6 +33,7 @@ import org.springframework.format.FormatterRegistry; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; +import org.springframework.http.client.reactive.ClientHttpConnector; import org.springframework.http.client.reactive.ClientHttpRequest; import org.springframework.http.codec.ServerCodecConfigurer; import org.springframework.util.MultiValueMap; @@ -216,7 +217,8 @@ public interface WebTestClient { } /** - * This server setup option allows you to connect to a running server. + * This server setup option allows you to connect to a running server via + * Reactor Netty. *
* WebTestClient client = WebTestClient.bindToServer() * .baseUrl("http://localhost:8080") @@ -228,6 +230,20 @@ public interface WebTestClient { return new DefaultWebTestClientBuilder(); } + /** + * A variant of {@link #bindToServer()} with a pre-configured connector. + *+ * WebTestClient client = WebTestClient.bindToServer() + * .baseUrl("http://localhost:8080") + * .build(); + *+ * @return chained API to customize client config + * @since 5.0.2 + */ + static Builder bindToServer(ClientHttpConnector connector) { + return new DefaultWebTestClientBuilder(connector); + } + /** * Base specification for setting up tests without a server.