spring boot单元测试之八:用mockmvc模拟header参数(spring boot 2.4.4)
一,演示项目的相关信息
1,项目地址:
https://github.com/liuhongdi/headertest
2,功能说明:演示了单元测试时传递header参数
3,项目结构:如图:
说明:刘宏缔的架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/27/spring-boot-dan-yuan-ce-shi-zhi-ba-yong-mockmvc-mo-ni/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,java代码说明
1,controller/HomeController.java
@Controller @RequestMapping("/home") public class HomeController { //显示home页面 @GetMapping("/home") public String login() { return "home/home"; } //接收header参数 @GetMapping("/send") @ResponseBody public String send(HttpServletRequest httpServletRequest) { String h1 = httpServletRequest.getHeader("h1"); String h2 = httpServletRequest.getHeader("h2"); String h3 = httpServletRequest.getHeader("h3"); return "res:"+h1+"_"+h2+"_"+h3; } }
2,home/home.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试发送header</title> </head> <body> <div> <input type="button" id="btnSave" onclick="go_send()" value="发送header信息" /> </div> <script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script> <script> //发送验证码: function go_send() { $.ajax({ cache: true, type: "GET", url: "/home/send", dataType: "text", async: true, beforeSend: function(request) { request.setRequestHeader("h1","h1aa"); request.setRequestHeader("h2","h2bb"); request.setRequestHeader("h3","h3cc"); }, error: function (request) { console.log("Connection error"); }, success: function (data) { //save token console.log("data:"); console.log(data); alert(data); } }); } </script> </body> </html>
3,controller/HomeControllerTest.java
@AutoConfigureMockMvc @SpringBootTest class HomeControllerTest { @Autowired private HomeController homeController; @Autowired private MockMvc mockMvc; @Test @DisplayName("测试读取header值") void send() throws Exception { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("h1","h1aa"); httpHeaders.add("h2","h2bb"); httpHeaders.add("h3","h3cc"); MvcResult mvcResult = mockMvc.perform(get("/home/send") .headers(httpHeaders) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); System.out.println("返回:"+content); assertThat(content, equalTo("res:h1aa_h2bb_h3cc")); } @Test @DisplayName("测试读取header值:map形式") void send_map() throws Exception { Map<String, String> map = new HashMap<>(); map.put("h1", "h1a"); map.put("h2", "h2b"); map.put("h3", "h3c"); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setAll(map); MvcResult mvcResult = mockMvc.perform(get("/home/send") .headers(httpHeaders) .contentType(MediaType.APPLICATION_FORM_URLENCODED)) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); System.out.println("返回:"+content); assertThat(content, equalTo("res:h1a_h2b_h3c")); } }
三,测试效果
1,访问url
http://127.0.0.1:8080/home/home
如图:
2,运行单元测试:
四,查看spring boot的版本:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.4)
分类:
spring boot单元测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2020-03-26 centos8平台使用slabtop监控slab内存的状态
2020-03-26 centos8上使用lsblk查看块设备
2020-03-26 centos8环境判断当前操作系统是否虚拟机或容器
2020-03-26 centos8平台使用lscpu查看cpu信息
2020-03-26 centos8平台使用pidstat监控cpu/内存/io