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.