企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
###40.3.10 自动配置的Spring REST Docs测试 如果想在测试类中使用Spring REST Docs,你可以使用`@AutoConfigureRestDocs`注解,它会自动配置`MockMvc`去使用Spring REST Docs,并移除对Spring REST Docs的JUnit规则的需要。 ```java import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @RunWith(SpringRunner.class) @WebMvcTest(UserController.class) @AutoConfigureRestDocs("target/generated-snippets") public class UserDocumentationTests { @Autowired private MockMvc mvc; @Test public void listUsers() throws Exception { this.mvc.perform(get("/users").accept(MediaType.TEXT_PLAIN)) .andExpect(status().isOk()) .andDo(document("list-users")); } } ``` 此外,除了配置输出目录,`@AutoConfigureRestDocs`也能配置将出现在任何文档化的URLs中的部分,比如host,scheme和port等。如果需要控制更多Spring REST Docs的配置,你可以使用`RestDocsMockMvcConfigurationCustomizer` bean: ```java @TestConfiguration static class CustomizationConfiguration implements RestDocsMockMvcConfigurationCustomizer { @Override public void customize(MockMvcRestDocumentationConfigurer configurer) { configurer.snippets().withTemplateFormat(TemplateFormats.markdown()); } } ``` 如果想充分利用Spring REST Docs对参数化输出目录的支持,你可以创建一个`RestDocumentationResultHandler` bean,自动配置将使用它调用`alwaysDo`方法,进而促使每个`MockMvc`调用都会自动产生默认片段: ```java @TestConfiguration static class ResultHandlerConfiguration { @Bean public RestDocumentationResultHandler restDocumentation() { return MockMvcRestDocumentation.document("{method-name}"); } } ```