【问题标题】:Junit testing- java.lang.AssertionError: Status Expected:<200> but was:<403>Junit 测试- java.lang.AssertionError: 预期状态:<200> 但原为:<403>
【发布时间】:2020-09-29 06:51:09
【问题描述】:

我知道以前有人问过这类问题,我尝试了其中给出的许多答案,但没有一个是好的,所以有人可以帮我解决这个问题

它是我的控制器类

@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-boot api junit5 mockmvc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2022-01-17
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多