Spring Boot接口授权测试出现404状态码断言错误的求助
Spring Boot接口授权测试出现404状态码断言错误的求助
看起来你在做Spring Boot接口的授权测试时遇到了问题——测试用例断言接口返回200,但实际拿到了404状态码对吧?我来帮你分析下可能的原因和对应的解决办法:
问题核心分析
你的测试类目前只加载了UserDetailsMock这个配置类,这会导致Spring容器中没有加载实际的Controller、Swagger配置等业务相关类,自然找不到你要测试的接口,所以返回404。
具体解决步骤
让测试类加载主应用配置
把你的Spring Boot启动类也添加到@SpringBootTest的classes参数中,这样Spring才会扫描并加载所有业务组件(比如Controller):@SpringBootTest(classes = {YourApplication.class, UserDetailsMock.class}) // 替换成你项目实际的启动类 @AutoConfigureMockMvc public class MuninServiceAuthorizationTest { // 原测试代码保持不变 }检查Swagger接口路径是否正确
你测试的Swagger路径/swagger/ui/**可能和实际版本不匹配:- 如果是Swagger 3.x,正确的路径通常是
/swagger-ui/**(注意是swagger-ui而非swagger/ui)
修改后的请求构建代码:
endpoints = Arrays.asList( MockMvcRequestBuilders.post("/migrate/foss").with(csrf()), MockMvcRequestBuilders.get("/swagger-ui/**") );- 如果是Swagger 3.x,正确的路径通常是
确认业务接口路径拼写正确
检查你的/migrate/foss接口对应的Controller是否正确映射了这个路径,确保没有拼写错误或者@RequestMapping的层级问题。
额外注意点
你的UserDetailsMock配置是没问题的,@Primary注解能确保测试时优先使用这个内存用户服务,只要解决了接口存在性的问题,授权相关的测试就能正常进行啦。
备注:内容来源于stack exchange,提问作者Narjess
相关产品推荐
相关产品推荐

