gpt4 book ai didi

Spring @PathVariable 集成测试

转载 作者:行者123 更新时间:2023-11-28 21:33:35 25 4
gpt4 key购买 nike

我正在尝试为我的一种处理表单提交的方法编写集成测试。问题是我在 Controller 的 @RequestMapping 中使用了 @PathVariable int id。当我的测试方法到达 .handle() 部分时,我收到以下错误消息。

nested exception is java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping

因此 Controller 无法访问该 ID。我正在使用 request.setRequestURI("/url-"+ s.getId()); 但显然它对设置 @PathVariable 没有帮助。有什么方法可以设置我的 Mock 对象的 @PathVariable 吗?

更新:

是的,我在我的测试类中使用了 MockHttpServletRequestannotationMethodHandlerAdapter.handle

Controller :

@RequestMapping(method = RequestMethod.POST, params = {"edit" })    
public String onSubmit(@ModelAttribute("sceneryEditForm") SceneryEditForm s,
@PathVariable int id, Model model) {
// some code that useing id
}

测试方法:

@Test
public void testEditButton() throws Exception {
MyObject s = new MyObject();
request.setMethod("POST");
request.setRequestURI("/edit-" + s.getId());
request.setParameter("edit", "set");
final ModelAndView mav = new AnnotationMethodHandlerAdapter()
.handle(request, response, controller);
assertViewName(mav, "redirect:/view-" + s.getId());
}

最佳答案

错误正确:没有路径变量id

您需要添加带有占位符 id 的路径表达式

@RequestMapping(value = "/something/{id}",
method = RequestMethod.POST,
params = {"edit" })
public String onSubmit(@ModelAttribute("sceneryEditForm") SceneryEditForm s,
@PathVariable int id, Model model) {
// some code that useing id
}

关于Spring @PathVariable 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640673/

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