首页 > 解决方案 > 带有控制器建议异常处理程序和 webAppContextSetup 的 SpringBoot 的 MockMvc

问题描述

我有一个需要使用完整的 WebApplicationContext 创建 MockMvc 的环境。@AutoConfigureMockMvc在 setUp() 方法中 使用此注释或此行: MockMvcBuilders.webAppContextSetup()

我不能使用 MockMvc 的独立控制器版本,MockMvcBuilders.standaloneSetup()因为它需要相当复杂的配置才能工作。

我从各种文章中了解到,出于某种奇怪的原因,在没有适当的控制器建议设置的情况下创建了 MockMvc。因此,对于预期错误处理但未在测试环境中连接的场景,响应是完全不同的。

我想知道是否有任何方法可以使 MockMvc 设置类似于 Spring Boot 应用程序,其中包括异常处理程序。

如果不可能,我想知道考虑到限制是否有任何方法可以智能地测试错误场景。

我了解独立设置允许通过StandaloneMockMvcBuilder.setControllerAdvice()简化手动添加控制器建议。不幸的是,我必须坚持使用 webAppContextSetup 并且DefaultMockMvcBuilder没有这样的方法。

更新:

测试使用以下注释:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApplication.class)
@AutoConfigureMockMvc
@WebAppConfiguration
@ContextConfiguration
@ActiveProfiles("test")
@Transactional
@WithMockUser(username = "test", roles = { "role1" })

异常处理程序带有注释

@RestControllerAdvice

更新2:

MyApplication 类中添加了以下注释

@ComponentScan(basePackages = {"com.xyz", "com.xyz.config"})

其中 com.xyz 是主包,MyApplication 类位于其中,com.xyz.config 是异常处理程序的包。它没有帮助。

标签: springspring-bootunit-testingspring-mvcmockito

解决方案


推荐阅读