我正在使用 Spring REST
docs和我正在使用新的注解 @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。有人能帮我吗?
1条答案
按热度按时间cigdeys31#
这个问题是由你使用
@Configuration
. 如spring引导参考文档中所述,当测试类具有嵌套@Configuration
类,而不是应用程序的主配置。你应该使用@TestConfiguration
在你的巢上RestDocsConfiguration
而不是上课。