spring autoconfigurerestdocs附加配置

zlwx9yxi  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(339)

我正在使用 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。有人能帮我吗?

cigdeys3

cigdeys31#

这个问题是由你使用 @Configuration . 如spring引导参考文档中所述,当测试类具有嵌套 @Configuration 类,而不是应用程序的主配置。你应该使用 @TestConfiguration 在你的巢上 RestDocsConfiguration 而不是上课。

相关问题