gpt4 book ai didi

java - 带有单元测试的 Spring Boot 测试 API 端点应返回 404 而不是 400

转载 作者:行者123 更新时间:2023-12-01 18:42:27 25 4
gpt4 key购买 nike

我的 Spring Boot 应用程序上有以下 Controller ,它连接到 MongoDB:

@RestController
@RequestMapping("/experts")
class ExpertController {
@Autowired
private ExpertRepository repository;


@RequestMapping(value = "/", method = RequestMethod.GET)
public List<Experts> getAllExperts() {
return repository.findAll();
}

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Experts getExpertById(@PathVariable("id") ObjectId id) {
return repository.findBy_id(id);
}

我正在尝试在测试中测试 get/id 端点,我希望返回 404 响应,如下所示:

 @Test
public void getEmployeeReturn404() throws Exception {
ObjectId id = new ObjectId();
mockMvc.perform(MockMvcRequestBuilders.get("/experts/999", 42L)
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isNotFound());

}

尽管如此,返回的响应是 400,这意味着我的请求格式错误。我猜问题出在我在 URI 上输入的 id 上?我知道 mongo 接受 hexStrings 作为主键,所以我的问题是,如何在我的数据库中不存在的 URI 上使用 id,以便我可以获得 404 响应?预先感谢您的回答。

最佳答案

"/experts/999", 42L

这不是一个 objectId。

尝试类似的事情

 mockMvc.perform(MockMvcRequestBuilders.get("/experts/58d1c36efb0cac4e15afd278")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isNotFound());

关于java - 带有单元测试的 Spring Boot 测试 API 端点应返回 404 而不是 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898514/

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