spring boot单元测试之七:用mockmvc模拟session(spring boot 2.4.3)
2023-09-14 08:59:32 时间
一,演示项目的相关信息
1,地址:
https://github.com/liuhongdi/sessiontest
2,功能说明:
演示了用mockmvc模拟有session时的操作
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 getsess(HttpServletRequest request) { HttpSession session=request.getSession(); String username = (String)session.getAttribute("username"); System.out.println("session username:"+username); if (username == null) { return ""; } else { return username; } } //设置session @GetMapping("/set") public String setSess(@RequestParam("userName")String userName, HttpServletRequest request) { HttpSession session=request.getSession(); session.setAttribute("username", userName); //判断写入是否成功? String nameret = (String)session.getAttribute("username"); System.out.println("set session username and read:"+nameret); return nameret; } }
2,controller/UserControllerTest.java
@AutoConfigureMockMvc @SpringBootTest class UserControllerTest { @Autowired private UserController userController; @Autowired private MockMvc mockMvc; private static MockHttpSession sessionPub; /** * 测试方法开始之前执行 设置模拟Mvc */ @BeforeAll public static void setupMockMvc() { sessionPub = new MockHttpSession(); sessionPub.setAttribute("username", "liuhongdi"); } @Test @DisplayName("测试get用户名,有session") void getTest() throws Exception { //MockHttpSession session = new MockHttpSession(); //session.setAttribute("username", "liuhongdi"); MvcResult mvcResult = mockMvc.perform(get("/user/get") .session(sessionPub) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo("liuhongdi")); } @Test @DisplayName("测试get用户名,无session") void getTestFail() throws Exception { MvcResult mvcResult = mockMvc.perform(get("/user/get") .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo("")); } @Test @DisplayName("测试set session") void setTest() throws Exception { String name="mr liu"; MvcResult mvcResult = mockMvc.perform(get("/user/set?userName="+name) .session(sessionPub) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); assertThat(content, equalTo("mr liu")); } }
三,测试效果
1,访问url查看效果:
设置session
http://127.0.0.1:8080/user/set?userName=laoliuabc
如图:
读取session:
访问:
http://127.0.0.1:8080/user/get
如图:
2,运行单元测试:
四,查看spring boot的版本:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.3)
相关文章
- 深入理解 Spring 事务:入门、使用、原理
- 玩转 Spring Boot 应用篇(引入RabbitMQ解决店铺下单峰值问题)(十八)
- spring boot自动配置原理面试题_Spring boot面试
- springboot框架简介_spring框架的功能
- Spring Boot 最新发布,支持 Java 19,这速度太快了。。
- Spring 全家桶之 Spring Boot 2.6.4(一)- Quickstart
- 【http 请求返回状态码 500 】 Spring Boot 模拟http请求「建议收藏」
- Spring Boot + flowable 完美结合,快速实现工作流
- Spring Boot中使用JUnit5进行单元测试
- 日常随笔--Spring Cloud、Shell脚本、JDK版本新特征
- Spring Boot + Netty + WebSocket 实现消息推送
- 如何定制化Spring Boot Starter,这次我终于学会了
- Spring:IOC
- 记一次Spring中HttpMessageConverter的源码分析
- Spring Boot整合Redis
- IDEA顺序启动多个Spring Boot微服务
- [Redis]Spring Boot中Redis Template集群配置
- Spring Boot 3 升级 踩坑笔记
- Spring Boot 源码解读与原理剖析|文末赠书
- 使用 Spring Boot Actuator 和 Spring Cloud Bus 监控和管理消息总线
- Spring Cloud Data Flow配置数据源、应用程序、任务
- Spring Boot 实现扫码登录,这种方式太香了!!
- Spring Boot 集成 Mybatis 实现双数据源详解编程语言
- Spring Boot(十三):spring boot小技巧详解编程语言
- Spring Boot(五):spring data jpa的使用详解编程语言
- spring boot 集成disconf详解编程语言