gpt4 book ai didi

java - 如何使用http响应参数测试mvc Controller 方法?

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

你能帮我吗?我需要测试这个 Controller 方法。但不知道如何处理 httpservletresponse 对象。

@Controller
public class HomeController {

@PostMapping("/signout")
public String signOut(HttpServletResponse response){
response.addCookie(new Cookie("auth-token", null));
return "redirect:http://localhost:3000";
}
}

谢谢)

最佳答案

Spring MVC Test 提供了一种通过实际 DispatcherServlet 执行请求并生成响应来测试 Controller 的有效方法。


import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.ResultMatcher;

@RunWith(SpringRunner.class)
@WebMvcTest(controllers=HomeController.class)
public class HomeControllerTest {

@Autowired
private MockMvc mockMvc;


@Test
public void testSignOut() throws Exception {

mockMvc.perform(post("/signout"))
.andDo(print())
.andExpect(new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
Assert.assertEquals("http://localhost:3000",result.getResponse().getRedirectedUrl());
}
});

}

}

如果 Spring MVC 没有 Spring Boot,请使用独立的 MockMvc 支持

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration // or @ContextConfiguration
public class HomeControllerTest{

@Autowired
private HomeController homeController;

private MockMvc mockMvc;

@Before
public void setup() {
// Setup Spring test in standalone mode
this.mockMvc =
MockMvcBuilders.standaloneSetup(homeController).build();
}

关于java - 如何使用http响应参数测试mvc Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54475985/

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