gpt4 book ai didi

java - 如何使用 junit 测试 @RestController 的 @RequestBody?

转载 作者:行者123 更新时间:2023-12-02 02:30:36 25 4
gpt4 key购买 nike

我想为我的一个 @RestController 编写一个简单的测试,并断言输入 @RequestBody 已正确映射到 PersonDTO >:

@RestController
public class PersonServlet {
@PostMapping("/person")
public PersonRsp find(@RequestBody PersonDTO dto) {
//business logic
}
}

public class PersonDTO {
private String firstname, lastname;
}

问题:如何将 JSON 请求正文发送到该 servlet。进一步检查 PersonDTO 字段,所有这些字段都已正确设置?

可能与此类似,但我不知道如何检查/监视已解析的 DTO?

@RunWith(SpringRunner.class)
@WebMvcTest(PersonSerlvet.class)
public class PersonTests {
@Autowired
private MockMvc mvc;

@Test
public void testExample() throws Exception {
this.mvc.perform(get("/person"))
.andExpect(status().isOk());
}
}

@Duplicate 标记:这不是链接问题的重复(这是关于如何读取响应正文字符串)。我实际上要求进行请求正文测试。

最佳答案

测试 Json 到 DTO 的反序列化实际上并不是 Controller 的责任,您将测试底层对象映射器,它是一个外部库(Jackson、Gson ..??)

不确定正在使用哪个库,但如果您想测试它的使用情况,您需要以与应用程序框架类似的方式手动构建适当的对象映射器,并使用其 api 将 Json 字符串序列化为目标DTO

关于java - 如何使用 junit 测试 @RestController 的 @RequestBody?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com