如何使用 MockMvc 发送空正文 POST 请求

时间:2021-07-27 18:32:06

标签: spring-boot mockmvc

我有一个简单的 Controller 类,我正在尝试使用 MockMvc 对其进行测试。目前,控制器类只是一个端点,旨在接受一个空的 POST 主体并返回一个 200 响应。

控制器:

@RestController
@RequestMapping("/api/v1/transactions")
public class TransactionController {

    @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.OK)
    public Transaction createTransaction(@RequestBody final Transaction transaction) {
        return transaction;
    }
}

测试:

class TransactionControllerTest {

    private static final String URL_TEMPLATE = "/api/v1/transactions";

    @Autowired
    private MockMvc mockMvc;

    @Test
    void shouldReturn200() throws Exception {

        final String emptyBody = "{}";

        mockMvc.perform(post(URL_TEMPLATE)
                .contentType(MediaType.APPLICATION_JSON)
                .content(emptyBody))
                .andExpect(status().isOk());

目前,测试返回 NPE。但是,当我在本地运行应用程序并通过邮递员提交带有标题 Content-Type = application/json & Accept = application/json 且原始正文为 {} 的 POST 请求时,我得到了成功的 200 响应。

我是不是用空字符串和 mockMvc 做错了什么?

0 个答案:

没有答案