Add auto-configuration for MockMvcTester
This commit adds auto-configuration and documentation for MockMvcTester, a wrapper of MockMvc that provides AssertJ integration as well as a fluent API to build requests. The main differences compared to the regular MockMvc are as follows: * No need for static imports for building requests and define assertions * No need to handle unchecked exception as they can be asserted instead * Support for converting the response body to data types Closes gh-41198
This commit is contained in:
@@ -140,7 +140,14 @@ include-code::MyApplicationArgumentTests[]
|
||||
|
||||
By default, `@SpringBootTest` does not start the server but instead sets up a mock environment for testing web endpoints.
|
||||
|
||||
With Spring MVC, we can query our web endpoints using {url-spring-framework-docs}/testing/spring-mvc-test-framework.html[`MockMvc`] or `WebTestClient`, as shown in the following example:
|
||||
With Spring MVC, we can query our web endpoints using {url-spring-framework-docs}/testing/mockmvc.html[`MockMvc`].
|
||||
Three integrations are available:
|
||||
|
||||
* The regular {url-spring-framework-docs}/testing/mockmvc/hamcrest.html[`MockMvc`] that uses Hamcrest.
|
||||
* {url-spring-framework-docs}/testing/mockmvc/assertj.html[`MockMvcTester`] that wraps `MockMvc` and uses AssertJ.
|
||||
* {url-spring-framework-docs}/testing/webtestclient.html[`WebTestClient`] where `MockMvc` is plugged in as the server to handle requests with.
|
||||
|
||||
The following example showcases the available integrations:
|
||||
|
||||
include-code::MyMockMvcTests[]
|
||||
|
||||
@@ -345,9 +352,10 @@ Often, `@WebMvcTest` is limited to a single controller and is used in combinatio
|
||||
|
||||
`@WebMvcTest` also auto-configures `MockMvc`.
|
||||
Mock MVC offers a powerful way to quickly test MVC controllers without needing to start a full HTTP server.
|
||||
If AssertJ is available, the AssertJ support provided by `MockMvcTester` is auto-configured as well.
|
||||
|
||||
TIP: You can also auto-configure `MockMvc` in a non-`@WebMvcTest` (such as `@SpringBootTest`) by annotating it with `@AutoConfigureMockMvc`.
|
||||
The following example uses `MockMvc`:
|
||||
TIP: You can also auto-configure `MockMvc` and `MockMvcTester` in a non-`@WebMvcTest` (such as `@SpringBootTest`) by annotating it with `@AutoConfigureMockMvc`.
|
||||
The following example uses `MockMvcTester`:
|
||||
|
||||
include-code::MyControllerTests[]
|
||||
|
||||
@@ -753,7 +761,13 @@ It can also be used to configure the host, scheme, and port that appears in any
|
||||
`@AutoConfigureRestDocs` customizes the `MockMvc` bean to use Spring REST Docs when testing servlet-based web applications.
|
||||
You can inject it by using `@Autowired` and use it in your tests as you normally would when using Mock MVC and Spring REST Docs, as shown in the following example:
|
||||
|
||||
include-code::MyUserDocumentationTests[]
|
||||
include-code::hamcrest/MyUserDocumentationTests[]
|
||||
|
||||
If you prefer to use the AssertJ integration, `MockMvcTester` is available as well, as shown in the following example:
|
||||
|
||||
include-code::assertj/MyUserDocumentationTests[]
|
||||
|
||||
Both reuses the same `MockMvc` instance behind the scenes so any configuration to it applies to both.
|
||||
|
||||
If you require more control over Spring REST Docs configuration than offered by the attributes of `@AutoConfigureRestDocs`, you can use a `RestDocsMockMvcConfigurationCustomizer` bean, as shown in the following example:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user