一,演示项目的相关信息
1,地址:
https://github.com/liuhongdi/cookietest
2,功能说明:演示mockmvc访问controller时提交cookie
3,项目结构:如图:
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,java代码说明
1,controller/UserController.java
@RestController @RequestMapping("/user") public class UserController { //读取session @GetMapping("/get") public String getcookie(@CookieValue(value = "username", defaultValue = "") String username) { System.out.println("get cookie:"+username); return "" + username; } //设置session @GetMapping("/set") public String setcookie(@RequestParam("userName")String userName, HttpServletRequest request, HttpServletResponse response) { Cookie cookie = new Cookie("username", userName); //过期时间,单位是:秒(s) cookie.setMaxAge(30 * 24 * 60 * 60); //cookie.setPath(request.getContextPath()); cookie.setPath("/"); response.addCookie(cookie); System.out.println("set cookie:"+userName); return userName; } }
2,controller/UserControllerTest.java
@AutoConfigureMockMvc @SpringBootTest class UserControllerTest { @Autowired private UserController userController; @Autowired private MockMvc mockMvc; @Test @DisplayName("测试读取cookie值") void getCookie() throws Exception{ Cookie cookieu = new Cookie("username", "mr liu"); //过期时间,单位是:秒(s) cookieu.setMaxAge(30 * 24 * 60 * 60); cookieu.setPath("/"); //query MvcResult mvcResult = mockMvc.perform(get("/user/get") .cookie(cookieu) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo("mr liu")); } @Test @DisplayName("测试读取cookie值失败") void getCookieFail() throws Exception{ //query MvcResult mvcResult = mockMvc.perform(get("/user/get") //.cookie(cookieu) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo("")); } @Test @DisplayName("测试写cookie值") void setCookie() throws Exception{ String cookieValue="laoliu123aaa"; //query MvcResult mvcResult = mockMvc.perform(get("/user/set?userName="+cookieValue) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo(cookieValue)); } }
三,效果测试
1,查接访问url测试
set cookie:
http://127.0.0.1:8080/user/set?userName=laoliu123
get cookie:
http://127.0.0.1:8080/user/get
返回:
2,执行单元测试:
四,查看spring boot的版本:
. ____ _ __ _ _ /\ / ___'_ __ _ _(_)_ __ __ _ ( ( )\___ | '_ | '_| | '_ / _` | \/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.3)