gpt4 book ai didi

java.lang.AssertionError : Status expected:<200> but was:<405> 错误

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

我在标记为 @Controller

的类中有一个方法
@RequestMapping(value = "/addEvent", method = RequestMethod.POST)
public String addEvent(Model model,
@Valid @ModelAttribute("myEvent") Event event,
BindingResult result, RedirectAttributes redirectAttributes,
@RequestParam(required = true) Integer selectedEventTypeId,
@RequestParam(required = true) Integer selectedEventStatusId) {

if (result.getErrorCount() > 1 ){
return "eventDetailsAdd";
}
eventService.addEvent(event, selectedEventTypeId, selectedEventStatusId);
redirectAttributes.addAttribute("idEvent", event.getId());
redirectAttributes.addAttribute("message", "added correctly at " + new Date() );
return "redirect:eventDetails";
}

如果我写下面的代码:

MockHttpServletRequestBuilder request = MockMvcRequestBuilders
.get("/addEvent");
ResultActions result = mockMvc.perform(request);

result.andExpect(MockMvcResultMatchers.status().isOk());

我明白了:

java.lang.AssertionError: Status expected:<200> but was:<405>
at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:60)
at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:89)
at org.springframework.test.web.servlet.result.StatusResultMatchers$5.match(StatusResultMatchers.java:549)
...

问题是什么,我该如何解决?

更新

如果我写:

MockHttpServletRequestBuilder request = MockMvcRequestBuilders
.get("/addEvent");
request.param("selectedEventTypeId", "1");
request.param("selectedEventStatusId", "1");

ResultActions result = mockMvc.perform(request);

result.andExpect(MockMvcResultMatchers.status().isOk());
result.andExpect(MockMvcResultMatchers.forwardedUrl("eventDetailsAdd"));

我看到了相同的结果。

已解决

Bitman 建议 + 添加(by Sotirios Delimanolis)

   request.param("selectedEventTypeId", "1");
request.param("selectedEventStatusId", "1");

在我的例子中,Event 事件实例将从 Spring 获取什么?

最佳答案

改变这个

MockHttpServletRequestBuilder request = MockMvcRequestBuilders
.get("/addEvent");

MockHttpServletRequestBuilder request = MockMvcRequestBuilders
.post("/addEvent");

因为您期望 Controller 中的 method = RequestMethod.POST POST但是您的测试正在执行 GET。

这就是 HTTP 错误 405 方法不允许的意思

关于java.lang.AssertionError : Status expected:<200> but was:<405> 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19405806/

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