当前位置:网站首页>详解构建mock服务最方便的神器——Moco
详解构建mock服务最方便的神器——Moco
2022-08-10 07:41:00 【测试开发Kevin】
moco介绍
moco框架是github上的一个开源项目,可模拟http,https,Socket协议的mock操作。如果大家不了解什么是mock请参考文章:
从0到1学会使用SpringBoot 搭建mock Server
这里重点介绍moco的standolone方式的用法! 下载地址:https://github.com/dreamhead/moco,点击下图中的Download Standalone Moco Runner 即可
启动moco 非常的简单
java -jar moco-runner-<version>-standalone.jar http -p 9999 -c test.json
这个命令也非常容易理解(把test.json放到moco.jar的相同目录即可)
http 表示使用的协议。Moco支持http,https,Socket三种协议
-p 表示使用的端口 ,不使用该参数默认启动端口58593
-c 是定义的mock 请求和与其对应的响应文件,使用json格式,示例如下:
[
{
"request":
{
"uri":"/hello"
},
"response":
{
"text":"moco"
}
}
]
此时我们在浏览器输入:http://127.0.0.1:9999/hello 回看到浏览器中显示信息 moco。这就是最简单的moco mock的实例!大家是不是感觉到使用moco创建mock 简直方便到起飞!
moco命令介绍
常用命令如下:
http实例,前面已经介绍
java -jar moco-runner-<version>-standalone.jar http -p 12306 -c foo.json
https实例
java -jar moco-runner-<version>-standalone.jar https -p 12306 -c foo.json --https /path/to/cert.jks --cert mocohttps --keystore mocohttps
同时处理多个json请求
java -jar moco-runner-<version>-standalone.jar http -p 12306 -c "*.json"
备注:该命令在windows系统中运行报错,建议在linux系统中运行,亲测centos运行正常。
java -jar moco-runner-<version>-standalone.jar http -p 12306 -g settings.json
我们可以统一设置要执行的json文件(即配置文件),当json文件非常多时,这种方式显然能够提升执行效率,具体代码如下:
[
{
"include" : "foo.json"
},
{
"include" : "bar.json"
}
]
更多信息可以参考
https://github.com/dreamhead/moco/blob/master/moco-doc/global-settings.md
其他参数
-q 使用Quiet 模式,该模式下不会显示请求和响应的详细信息
Version 查看moco的版本信息
-s 9527 关闭moco
Json文件常用实例
在一个json文件中设置多个请求,一个get请求,一个post请求并且是json格式,一个是使用了template函数的get请求
[
{
"request":{
"uri":"/withGetDemo",
"method":"get"
},
"response":{
"text":"this is a get method "
}
}
,
{
"request":{
"uri":"/withPostDemo",
"method": "post",
"headers": {
"content-type": "application/json"
},
"json": {
"name": "xiaoming",
"age": "18"
}
},
"response":{
"text":"this is a post method"
}
},
{
"request": {
"uri": "/template"
},
"response": {
"text": {
"template": "${now(\"yyyy-MM-dd\")}"
}
}
}
]
其他api详情请参考
https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
更多实例请参考
https://github.com/dreamhead/moco/tree/master/moco-runner/src/test/resources
moco的不足
使用moco有二周的时间了,暂时总结了两点不足:
1. 新添加的json文件,不能立即生效,需要重启moco-runner-<version>-standalone.jar,如果多人同时使用moco,新增或者更新mock时,需要协调通知。
2. Mock的请求不能存储到数据库中,对于统计mock历史请求结果不够友好,如果想进一步解决该问题,需要编写代码解析日志来完成对mock请求信息的统计
边栏推荐
- 简单业务类
- 英国国家卫生服务遭受攻击,系统出现大面积故障
- 【NeRF】原始论文解读
- 【MySQL】SQL语句
- PHP笔记 28 29 30 31
- Big guy, when Oracle single-table incremental synchronization, the source database server takes up nearly 2g of memory. This is not normal, right?
- If the data of the oracle business table is added, deleted, or modified, will the index of the table write redo and undo?
- 机器人控制器编程实践指导书旧版-实践二 传感器(模拟量)
- 【Rust指南】使用Cargo工具高效创建Rust项目 | 理解Rust特别的输入输出语句
- 手把手教你进行Mysql查询操作
猜你喜欢
CV+Deep Learning——网络架构Pytorch复现系列——classification(三:MobileNet,ShuffleNet)
神经网络的三种训练方法,神经网络训练全过程
软件测试面试题避雷(HR面试题)最常见的面试问题和技巧性答复
【MySQL】使用MySQL Workbench软件新建表
DGIOT supports industrial equipment rental and remote control
数据库公共字段自动填充
金融证券 初级 招股书 要求 黑话1刷数 黑话2底稿 黑话3董监高
机器人控制器编程实践指导书旧版-实践一 LED灯(数字量)
如何治理资源浪费?百度云原生成本优化最佳实践
Rust学习:6.3_复合类型之元组
随机推荐
概率分布及其应用
Data types for database learning
CV+Deep Learning - network architecture Pytorch recurrence series - classification (3: MobileNet, ShuffleNet)
.NET-7.WPF学习经验总结
进程管理(动态的)
Regular backup of mysql database (retain backups for nearly 7 days)
Relaxation class: the boss will martial arts, who also can not hold up against!The charm of six sigma training
Basic use of Log4j2
个人博客系统
Complex AB experiment
nrm 使用详解
oracle业务表的数据发生增删改,该表的索引会写redo,undo吗?
浅谈C语言整型数据的存储
预测股票涨跌看什么指标,如何预测明天股票走势
【NeRF】原始论文解读
ctfshow SSTI 知识点总结
DGIOT三千万电表集抄压测
A few lines of code can crash the system;
Uni-app开发微信小程序使用本地图片做背景图
阿里巴巴(中国)网络技术有限公司、测试开发笔试二面试题(附答案)