POST:预期异常状态:<201> 但为:<200>

POST: Exception Status expected:<201> but was:<200>

从技术上讲这应该是一个简单的任务,但我找不到错误。

想写一个普通的“POST方法”,但是测试的时候遇到了问题:enter code here Status expected:<201> but what:<200>.

我的问题是,为什么我得到的是 OK 而不是 CREATED?

代码:

控制器中的后映射

 @PostMapping
    public Optional<ADto> createA(@RequestBody ADto a){
        return Optional.ofNullable(a);
    }

单元测试

@Test
    void verifyPostA() throws Exception {
        var a = new ADto(1L, "a");

        var aText = objectMapper.writeValueAsString(a);

        mockMvc.perform(
                        MockMvcRequestBuilders.post("/as")
                                .content(aText)
                                .contentType(MediaType.APPLICATION_JSON)
                )
                .andDo(print())
                .andExpect(status().isCreated())
                .andExpect(jsonPath("$.id").value("1"));
    }

因为控制器方法执行成功但未执行 return ResponseEntity ,默认响应代码为 200。

要为这种情况配置响应代码,您只需在该控制器方法上注释 @ResponseStatus 即可:

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Optional<ADto> createA(@RequestBody ADto a){
        return Optional.ofNullable(a);
 }