最新要闻
- 世界头条:辽宁:延续实施社会保险费惠企减负政策
- 天天热推荐:“最强法务部”出手维权:安卓Switch模拟器Skyline宣布停止开发
- 索尼PS5 Slim/Pro详细配置曝光:性能翻番了!
- 特斯拉率先涨价 电动车价格战没戏了?“白色石油”碳酸锂价格重回20万/吨以上
- 深蹲后开始起跳!长城汽车4月销量超9.3万辆 同比大涨73% 全球视讯
- 担心的事情发生了!男子庆祝离婚去蹦极绳子断裂:脖子腰椎全摔断_全球快播
- 度小满发布2022ESG报告:践行ESG发展理念助推可持续发展_视点
- 环球视点!财报解析 | 2022年上汽扣非净利跌破百亿 上汽乘用车盈利仍承压
- 西藏航空回应客机机舱内出现浓烟返航:空调组件故障 安全没影响
- 全球速看:21金维他维生素C片60粒9.9元抄底:立减50元
- 杰克辣条再开直播虐猫?人民网怒批:处刑式虐猫可憎 向人类良知挑战
- 砸掉承重墙 全楼无家可归 损失1.6亿!最多可判刑7年
- 【世界聚看点】印度:所有智能手机必须标配FM收音机 默认开启
- 蕙兰怎么养才好_蕙兰怎么养
- 国家医保局:一季度基本医疗保险基金整体运行平稳
- iPhone 15 Pro Max影像升级巨大!苹果这次硬刚安卓_动态焦点
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界要闻:MockMVC的使用
简介
MockMvc是一种基于Java和JUnit的测试框架,旨在测试Spring MVC应用程序的控制器层。它可以帮助我们模拟HTTP请求,检查响应值,以及发送表单数据和文件等。 MockMvc可以与其他测试组件(如JUnit和Hamcrest)结合使用,以模拟REST API端点或用户界面的操作。
Get请求
简单示例
创建一个简单的Controller:
【资料图】
import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/mockMcv")public class MockMvcController { @GetMapping("/first/connect") public String testConnect() { String result = "Hello MockMVC"; return result; }}
创建测试类,使用MockMVC
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.AutoConfigureMockMvc;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.request.MockMvcRequestBuilders;import org.springframework.test.web.servlet.result.MockMvcResultMatchers;// webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT:// 指示Spring Boot在随机且可用的端口上启动Web服务器,避免端口冲突@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)// 自动配置MockMvc和Spring IOC容器@AutoConfigureMockMvc@RunWith(SpringRunner.class)public class MockMvcControllerTest { @Autowired private MockMvc mockMvc; @Test public void testConnect() throws Exception { MvcResult mvcResult = mockMvc.perform( // Get请求,url为:/mockMcv/first/connect MockMvcRequestBuilders.get("/mockMcv/first/connect")) // 检查响应状态码是否为200 .andExpect(MockMvcResultMatchers.status().isOk()) // 返回一个MvcResult回调对象 .andReturn(); // 获取响应文本 String content = mvcResult.getResponse().getContentAsString(); // 通过断言来验证返回是否正确 Assert.assertTrue(content.equals("Hello MockMVC")); }}
直接启动Debug启动,请求成功:
注意点
上述示例中需要注意,@SpringBootTest注解需要括号中的内容
去掉@SpringBootTest括号中的内容,运行结果:
原因:@SpringBootTest注释用于在测试与Spring Boot应用程序的集成中启用Spring上下文,如果使用默认配置,那就是Mock模式,即加载一个伪造的Web环境,其中一些内容(例如HTTP会话和重定向)不实际触发,而只是返回一个默认值。
所以在测试期间尝试模拟HTTP请求并使用不实际存在的Session时,可能会从该会话对象中出现NullPointerException。
Get带参数
controller中新加一个带参数的Get请求:
@GetMapping("/connect/withParam")public String testConnectWithParam(@RequestParam("id") Long id, @RequestParam("name") String name) { String result = "id:" + id + ",name:" + name; return result;}
测试类新增对应的测试方法:
@Testpublic void testConnectWithParam() throws Exception { MvcResult mvcResult = mockMvc.perform( MockMvcRequestBuilders.get("/mockMcv/connect/withParam") // 通过param()存放各个请求参数 .param("id", "1") .param("name", "MockMVC")) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); Assert.assertTrue(content.contains("MockMVC"));}
Debug启动,请求成功:
Post请求
示例
controller中新加一个带Body的Post请求:
@PostMapping("/connect/withBody")public String testConnectWithBody(@RequestBody MaprequestBody) { String result = JSONArray.toJSONString(requestBody); return result;}
新增一个Java对象存放值:
import lombok.Data;import java.io.Serializable;@Datapublic class MockMVCInfo implements Serializable { private static final Long serializableID = -1L; private Long id; private String name;}
测试类新增对应的测试方法:
@Testpublic void testConnectWithBody() throws Exception { MockMVCInfo mockMVCInfo = new MockMVCInfo(); mockMVCInfo.setId(3L); mockMVCInfo.setName("MockMVC"); MvcResult mvcResult = mockMvc.perform( MockMvcRequestBuilders.post("/mockMcv/connect/withBody") // 指定 header中的 Content-Type为 application/json .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) // 通过content()存放Body的Json .content(JSON.toJSONString(mockMVCInfo))) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn(); String content = mvcResult.getResponse().getContentAsString(); Assert.assertTrue(content.contains("MockMVC"));}
Debug启动,请求成功:
注意点
1.通过RequestBody传递值,就得使用.content()方法存放Json
2.Body中使用Json,需要在header中指定Content-Type为application/json,参考Postman:
关键词:
世界要闻:MockMVC的使用
世界头条:辽宁:延续实施社会保险费惠企减负政策
天天热推荐:“最强法务部”出手维权:安卓Switch模拟器Skyline宣布停止开发
索尼PS5 Slim/Pro详细配置曝光:性能翻番了!
特斯拉率先涨价 电动车价格战没戏了?“白色石油”碳酸锂价格重回20万/吨以上
深蹲后开始起跳!长城汽车4月销量超9.3万辆 同比大涨73% 全球视讯
担心的事情发生了!男子庆祝离婚去蹦极绳子断裂:脖子腰椎全摔断_全球快播
度小满发布2022ESG报告:践行ESG发展理念助推可持续发展_视点
vue中手动清除KeepAlive缓存|环球视讯
【世界快播报】钉钉PC端使用 Blazor WebAssembly 读取用户信息
环球视点!财报解析 | 2022年上汽扣非净利跌破百亿 上汽乘用车盈利仍承压
西藏航空回应客机机舱内出现浓烟返航:空调组件故障 安全没影响
全球速看:21金维他维生素C片60粒9.9元抄底:立减50元
杰克辣条再开直播虐猫?人民网怒批:处刑式虐猫可憎 向人类良知挑战
砸掉承重墙 全楼无家可归 损失1.6亿!最多可判刑7年
【世界聚看点】印度:所有智能手机必须标配FM收音机 默认开启
蕙兰怎么养才好_蕙兰怎么养
全球球精选!记录--极致舒适的Vue页面保活方案
世界热头条丨云图说|图解制品仓库CodeArts Artifact
国家医保局:一季度基本医疗保险基金整体运行平稳
iPhone 15 Pro Max影像升级巨大!苹果这次硬刚安卓_动态焦点
观察:显卡散热疯了!背板上装风扇、热管:实测根本没用
买特斯拉等车更省了 上海:6月30日前购买纯电动车补贴1万
中国央行连续6个月增持黄金:这是啥意思? 新动态
当前速读:女子霸占车位拒绝挪车 业主怒将车位焊上 律师:虽有不当但不违法
世界最新:肃南:按下项目建设“快进键”
读书笔记丨理解和学习事务,让你更好地融入云原生时代
第二章-Java程序的设计环境
Python第三方库安装教程、什么是第三方库_全球消息
AI来势汹汹,这份「生存计划」请查收!|世界实时
商品日报(5月8日):商品市场情绪回暖 双焦大涨超6%豆一涨超5%
《护心》雁回人物解析 《护心》雁回是好人还是坏人_当前通讯
每日消息!阿汤哥开战机为英国王送祝福:你可以当我的僚机
淘宝发布“时光机”:可查看20年消费数据 你一共花了多少钱?
赔钱卖车?福特电动车业务巨亏 卖一辆车亏40万元 微头条
摆脱依赖美国GPS!日本计划大幅强化自家准天顶导航系统:卫星从4颗增至11颗
拉萨一路口红绿灯只有3秒?“飙车”才能过 已延长至15秒
嫁入高门的女人百度云 嫁入高门的女人-天天快资讯
昇腾实战丨DVPP媒体数据处理视频解码问题案例
记一次springboot项目漏洞挖掘 全球观速讯
微资讯!科创板收盘播报:科创50指数涨0.77% 软件股显著回暖
奇瑞QQ冰淇淋的智能化驾驶 可坡道起步、动力随心
【环球聚看点】马斯克否认家里有矿:不是富二代而是白手起家
挑战千元旗舰耳机!真我Buds Air5 Pro行业首发50dB降噪
怎么用手机更健康?专家:正常光照下建议亮度控制在50%、距离50cm 天天亮点
巴菲特将AI比作原子弹:将会改变一切
网友的iPhone 14 Pro Max烧屏!苹果售后反馈“屏幕没问题”|动态焦点
客所思s10 客所思控制面板下载s10 环球最资讯
天天观点:Linux基础18 磁盘介绍, 结构, 磁盘分区Fdisk
Marked.js让您的文档编辑更加轻松自如-环球报资讯
Kerberos协议原理 全球时讯
验证码短信 API 接入指南:Java 语言示例代码 天天新消息
Tcl/Tk教程_编程入门自学教程_菜鸟教程-免费教程分享_世界观速讯
iPhone 16 Pro将采用固态按键:还有屏下Face ID!|世界今头条
咋想的?一住户小区花园内放生蟑螂 专家:病菌宿主可传播疾病_天天通讯
即时:餐馆有机花菜无认证遭索赔500元 正当维权还是恶意索赔?
全国首例超长矸石充填开采工作面在山能鲁西矿业新巨龙公司“上线”
关于Kubernetes-v1.23.6-master节点的初始化操作|全球播报
WEB中间件常见漏洞总结 当前通讯
企业短信遭疯狂盗用,可能是没配置验证码_当前报道
[webrtc 入门系列] centos搭建coturn服务器 当前播报
欧普康视:目前OK镜没有涉及到AIGC技术_今日关注
《小美人鱼》正片片段曝光:黑小美人鱼海底一展歌喉 天天滚动
全球今日讯!漫威影史最高分电影 《银河护卫队3》票房破2亿
俞敏洪谈为什么大量孩子失去好奇心:中国填鸭式教育、老师引导等造成 每日热点
世界消息!kingbase之ksql命令工具
【Issues】axios如何获取responseType为blob的请求的错误信息 环球时讯
浙江风彩网福彩双色球走势图_浙江风彩网 环球资讯
环球微速讯:一秒充一公里!华为全液冷超充架构全球首测:小鹏发去感谢信
京东20年为员工投入福利近500亿 还建4000套员工公寓 租金仅5折
别总盯着帕萨特 新一代别克君越上市定档:20万最香行政轿车来了
电动车主自驾更省钱!支付宝出行可看电价波动 一键比价
天天视讯!手机丢了三年后被启用:摄像头拍下非洲小哥
【上海成交周报】第19周新房成交2627套,涨价房源1613套 天天精选
常见的 API 大全分享_全球观点
C#高级编程--通信协议
GPS北斗卫星时间同步系统助力电力自动化网络系统_世界看热讯
世界热资讯!螣龙安科携攻击面管理和BAS再上榜!2023网安行业全景图速看
ESXI运行虚拟机,软件包0CPU耗用高 当前热门
观天下!河南董寨为野外孵化的朱鹮幼鸟佩戴“身份证”
华硕k43s什么时候上市的?华硕k43s参数
首款天玑8020平板电脑!荣耀平板V8今日发售:1899元起
环球关注:高性能大屏轻薄本华为MateBook D 16将开售 高质价比的实力之选
0月租!中兴U50 Pro 5G随身Wi-Fi首销:1699元|全球快资讯
员工拒从北京调离被开除 获赔14万+:官方支持维权 地点调整处理不当
罗永浩直播间拍卖西湖公厕充电宝 超低起拍价58元
索尼黑卡RX100M5怎么拍延时视频?索尼黑卡RX100M5参数
amd e350相当于intel的什么CPU?amd E350支持多大内存?
高分屏是什么意思?高分屏和ips屏有什么区别?
AMD OverDrive如何使用?AMD OverDrive怎么超频?
环球热门:常青科技董秘回复: “2-乙烯基萘”为公司募投项目计划产品之一,募投项目尚在建设当中
人民出版社在哪个城市?人民出版社是什么级别?
奥特曼的生日是几月几日?奥特曼名字大全
范伟出演的电视剧都有哪些?范伟个人简介
护士帽子三条杠是什么职称?护士帽子三道杠解释
仙境传说RO H5游戏详细图文架设教程
每日信息:使用UE做动画编辑-VRAnimEditor
刘基贤为什么叫67?刘基贤个人简介
世界热议:茂名恒博贸易有限公司_关于茂名恒博贸易有限公司的简介
华为夏季全场景新品发布会官宣:5月18日见-天天快看