Spring AutoConfigureRestDocs 附加配置
Spring AutoConfigureRestDocs additional configuration
我正在使用 Spring REST
文档生成文档,并且我正在使用新注释 @AutoConfigureRestDocs
而不是在 @BeforeEach
方法中明确定义。以下测试目前正在运行。
@WebMvcTest(PayrollController.class)
@AutoConfigureRestDocs
class PayrollControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testHello() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/api/payroll/hello"))
.andExpect(status().isOk())
.andExpect(content().string("hello world"));
}
}
但现在我需要漂亮地打印我的回复,我不想在每种方法中都这样做。根据 spring 文档,可以选择使用 RestDocsMockMvcConfigurationCustomizer
进一步自定义。我确实按照以下方式创建了该类型的 bean:
@WebMvcTest(PayrollController.class)
@AutoConfigureRestDocs
class PayrollControllerTest {
@Configuration
static class RestDocsConfiguration {
@Bean
public RestDocsMockMvcConfigurationCustomizer restDocsMockMvcConfigurationCustomizer() {
return configurer -> configurer.operationPreprocessors().withResponseDefaults(Preprocessors.prettyPrint());
}
}
@Autowired
private MockMvc mockMvc;
@Test
void testHello() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/api/payroll/hello"))
.andExpect(status().isOk())
.andExpect(content().string("hello world"));
}
}
但现在我所有的测试都失败了,并返回 404 not found。有人可以帮我解决这个问题吗?
问题是由于您使用@Configuration
引起的。如 Spring Boot reference documentation 中所述,当您的测试 class 具有嵌套的 @Configuration
class 时,将使用它代替应用程序的主要配置。您应该在嵌套的 RestDocsConfiguration
class 上使用 @TestConfiguration
。
我正在使用 Spring REST
文档生成文档,并且我正在使用新注释 @AutoConfigureRestDocs
而不是在 @BeforeEach
方法中明确定义。以下测试目前正在运行。
@WebMvcTest(PayrollController.class)
@AutoConfigureRestDocs
class PayrollControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testHello() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/api/payroll/hello"))
.andExpect(status().isOk())
.andExpect(content().string("hello world"));
}
}
但现在我需要漂亮地打印我的回复,我不想在每种方法中都这样做。根据 spring 文档,可以选择使用 RestDocsMockMvcConfigurationCustomizer
进一步自定义。我确实按照以下方式创建了该类型的 bean:
@WebMvcTest(PayrollController.class)
@AutoConfigureRestDocs
class PayrollControllerTest {
@Configuration
static class RestDocsConfiguration {
@Bean
public RestDocsMockMvcConfigurationCustomizer restDocsMockMvcConfigurationCustomizer() {
return configurer -> configurer.operationPreprocessors().withResponseDefaults(Preprocessors.prettyPrint());
}
}
@Autowired
private MockMvc mockMvc;
@Test
void testHello() throws Exception {
this.mockMvc.perform(MockMvcRequestBuilders.get("/api/payroll/hello"))
.andExpect(status().isOk())
.andExpect(content().string("hello world"));
}
}
但现在我所有的测试都失败了,并返回 404 not found。有人可以帮我解决这个问题吗?
问题是由于您使用@Configuration
引起的。如 Spring Boot reference documentation 中所述,当您的测试 class 具有嵌套的 @Configuration
class 时,将使用它代替应用程序的主要配置。您应该在嵌套的 RestDocsConfiguration
class 上使用 @TestConfiguration
。