From a1b009979521793943e27bbdba4e50ecb2bab0c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Tue, 18 Jun 2024 12:40:29 +0200 Subject: [PATCH] Add missing debug(Writer) alternative See gh-33059 --- .../test/web/servlet/assertj/MvcTestResultAssert.java | 11 +++++++++++ .../assertj/MockMvcTesterIntegrationTests.java | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/MvcTestResultAssert.java b/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/MvcTestResultAssert.java index 95355e00f78..614e32da2f3 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/MvcTestResultAssert.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/MvcTestResultAssert.java @@ -21,6 +21,7 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; +import java.io.Writer; import jakarta.servlet.http.Cookie; import org.assertj.core.api.AbstractStringAssert; @@ -158,6 +159,16 @@ public class MvcTestResultAssert extends AbstractMockHttpServletResponseAssertYou must call it before calling the assertion otherwise it is ignored + * as the failing assertion breaks the chained call by throwing an + * AssertionError. + */ + public MvcTestResultAssert debug(Writer writer) { + return apply(MockMvcResultHandlers.print(writer)); + } + /** * Verify that the request has failed. */ diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/assertj/MockMvcTesterIntegrationTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/assertj/MockMvcTesterIntegrationTests.java index 2c2951d5ef1..e55d2a0a218 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/assertj/MockMvcTesterIntegrationTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/assertj/MockMvcTesterIntegrationTests.java @@ -18,6 +18,7 @@ package org.springframework.test.web.servlet.assertj; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.HashMap; @@ -357,6 +358,15 @@ public class MockMvcTesterIntegrationTests { assertThat(capturedOut()).isEmpty(); } + @Test + void debugCanPrintToCustomWriter() { + StringWriter out = new StringWriter(); + assertThat(mvc.get().uri("/greet")).debug(out).hasStatusOk(); + assertThat(out.toString()) + .contains("MockHttpServletRequest:", "MockHttpServletResponse:"); + assertThat(capturedOut()).isEmpty(); + } + private String capturedOut() { return this.capturedOut.toString(StandardCharsets.UTF_8); }