Spring boot Junit测试-java.lang.AssertionError:预期状态:<;200>;但事实是:<;403>;

Spring boot Junit测试-java.lang.AssertionError:预期状态:<;200>;但事实是:<;403>;,spring-boot,api,junit5,mockmvc,Spring Boot,Api,Junit5,Mockmvc,我知道以前有人问过这样的问题,我尝试了其中给出的许多答案,但没有一个是好的,所以有人能帮我找到合适的解决方案吗 这是我的控制器类 @RestController @RequestMapping("/admin") public class ABController { @PutMapping("/train/{trainId}/{status}") public ResponseEntity updateTrainstatus(@Pat

我知道以前有人问过这样的问题,我尝试了其中给出的许多答案,但没有一个是好的,所以有人能帮我找到合适的解决方案吗

这是我的控制器类

@RestController
@RequestMapping("/admin")

public class ABController {

    @PutMapping("/train/{trainId}/{status}")
    public ResponseEntity updateTrainstatus(@PathVariable String trainId, @PathVariable String status) {
        return feignClient.updateTrainstatus(trainId, status);
    }

}
private final String UPDATE_TRAIN_URI = "/admin/train?trainId=train100&status=approved";

@Test
public void testJsonController() throws Exception {
    String trainId = "train100";
    String status = "approved";
    MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.put(UPDATE_TRAIN_URI)
        .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).characterEncoding("UTF-8");
    this.mockMvc.perform(builder).andExpect(MockMvcResultMatchers.status().isOk())
        .andExpect(MockMvcResultMatchers.content().string("Train status"))
        .andDo(MockMvcResultHandlers.print());
}
这是我的测试控制器类

@RestController
@RequestMapping("/admin")

public class ABController {

    @PutMapping("/train/{trainId}/{status}")
    public ResponseEntity updateTrainstatus(@PathVariable String trainId, @PathVariable String status) {
        return feignClient.updateTrainstatus(trainId, status);
    }

}
private final String UPDATE_TRAIN_URI = "/admin/train?trainId=train100&status=approved";

@Test
public void testJsonController() throws Exception {
    String trainId = "train100";
    String status = "approved";
    MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.put(UPDATE_TRAIN_URI)
        .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).characterEncoding("UTF-8");
    this.mockMvc.perform(builder).andExpect(MockMvcResultMatchers.status().isOk())
        .andExpect(MockMvcResultMatchers.content().string("Train status"))
        .andDo(MockMvcResultHandlers.print());
}

您的项目可能配置了spring安全性。控制器需要一些身份验证,例如请求头中的jwt令牌。在测试中,您的请求没有有效值,因此您收到403禁止状态