diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java index e9d4a5fa323..589cfbff8ee 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java @@ -381,6 +381,11 @@ class DefaultWebTestClient implements WebTestClient { DefaultWebTestClient.this.entityResultConsumer, getResponseTimeout()); } + @Override + public ResponseSpec exchangeSuccessfully() { + return exchange().expectStatus().is2xxSuccessful(); + } + private ClientRequest.Builder initRequestBuilder() { return ClientRequest.create(this.httpMethod, initUri()) .headers(headersToUse -> { 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 49ca1f1bc57..a889f074db5 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 @@ -700,10 +700,21 @@ public interface WebTestClient { S attributes(Consumer> attributesConsumer); /** - * Perform the exchange without a request body. - * @return a spec for decoding the response + * Perform the exchange. + * @return a spec for expectations on the response */ ResponseSpec exchange(); + + /** + * Variant of {@link #exchange()} that expects a successful response. + * Effectively, a shortcut for: + *
+		 * exchange().is2xxSuccessful()
+		 * 
+ * @return a spec for expectations on the response + * @since 7.0 + */ + ResponseSpec exchangeSuccessfully(); } diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClient.java b/spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClient.java index e38a1953364..ece99b233c5 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClient.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClient.java @@ -269,6 +269,11 @@ class DefaultRestTestClient implements RestTestClient { }, false), DefaultRestTestClient.this.entityResultConsumer); } + + @Override + public ResponseSpec exchangeSuccessfully() { + return exchange().expectStatus().is2xxSuccessful(); + } } diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/client/RestTestClient.java b/spring-test/src/main/java/org/springframework/test/web/servlet/client/RestTestClient.java index 1ed30c461b3..3c131573661 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/client/RestTestClient.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/client/RestTestClient.java @@ -514,10 +514,20 @@ public interface RestTestClient { S attributes(Consumer> attributesConsumer); /** - * Perform the exchange without a request body. - * @return a spec for decoding the response + * Perform the exchange. + * @return a spec for expectations on the response */ ResponseSpec exchange(); + + /** + * Variant of {@link #exchange()} that expects a successful response. + * Effectively, a shortcut for: + *
+		 * exchange().is2xxSuccessful()
+		 * 
+ * @return a spec for expectations on the response + */ + ResponseSpec exchangeSuccessfully(); }