diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/AbstractMockHttpServletResponseAssert.java b/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/AbstractMockHttpServletResponseAssert.java index a6c98a6331e..6fc0dbd79af 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/AbstractMockHttpServletResponseAssert.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/assertj/AbstractMockHttpServletResponseAssert.java @@ -22,6 +22,7 @@ import org.assertj.core.api.AbstractByteArrayAssert; import org.assertj.core.api.AbstractStringAssert; import org.assertj.core.api.Assertions; import org.assertj.core.api.ByteArrayAssert; +import org.assertj.core.api.StringAssert; import org.springframework.lang.Nullable; import org.springframework.mock.web.MockHttpServletResponse; @@ -163,4 +164,16 @@ public abstract class AbstractMockHttpServletResponseAssert assertThat(result).hasRedirectedUrl("test")); } + @Test + void assertErrorMessageWithUnresolvedException() { + assertThatExceptionOfType(AssertionError.class) + .isThrownBy(() -> assertThat(mvc.get().uri("/error/message")).hasErrorMessage("invalid")) + .withMessageContainingAll("[Servlet error message]", "invalid", "expected error message"); + } + @Test void assertRequestWithUnresolvedException() { testAssertionFailureWithUnresolvableException( @@ -798,6 +806,13 @@ public class MockMvcTesterIntegrationTests { public String validation(@PathVariable @Size(max = 4) String id) { return "Hello " + id; } + + @GetMapping("/error/message") + @ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "expected error message") + public void errorMessage() { + + } + } }