gpt4 book ai didi

java - 禁用Http GET方法后,如何对其进行单元测试?

转载 作者:行者123 更新时间:2023-12-02 08:41:19 27 4
gpt4 key购买 nike

所以在我的 Spring Controller 中,我有这条路线

@RequestMapping(value = "myroute", method = POST)
public String myRoute(HttpServletRequest) {
...
}

我们使用 MockMvcBuilder 来模拟 POST 调用。

MockHttpServletRequestBuilder post = post(myRouteUrl);
mockMvc.perform(post).andExpect(status().isOK());

现在如果我只是更改 post 来获取,状态返回仍然是 200。那么如何验证 GET 方法失败呢?

使用 Java 1.8。谢谢!

最佳答案

当我尝试以下操作时,出现 HTTP 错误 405。所示示例中还缺少其他内容吗?

这是我使用的 Controller 类。

package demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

@RestController
public class MyController {
@RequestMapping(value = "/myroute", method = GET)
public String myRoute(HttpServletRequest request) {
System.out.println("HERE");
return "good";
}
}

这是我使用的测试类。

package demo;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ExtendWith(MockitoExtension.class)
@WebMvcTest(MyController.class)
class MyControllerTest {
@Autowired
private MockMvc mockMvc;


@Test
void myRoute() throws Exception {
MockHttpServletRequestBuilder post = post("/myroute");
mockMvc.perform(post).andExpect(status().isOk());
}
}

错误消息:

 Error message = Request method 'POST' not supported
Headers = [Allow:"GET"]
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []

Status expected:<200> but was:<405>
Expected :200
Actual :405

关于java - 禁用Http GET方法后,如何对其进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61376235/

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