Mock工具之Moco使用

一、什么是Mock

mock英文单词有愚弄、嘲笑、模拟的意思,这里主要是模拟的意思

二、什么是Moco

  • 开源的、基于java开发的一个mock框架
  • 支持http、https、socket等协议

三、Mock的特点

  • 只需要简单的配置request、response等即可满足要求

  • 支持在request 中设置headers、cookies等

  • 支持GET、POST、PUT、DELETE等请求方法

  • 无需环境配置,有Java环境即可

  • 修改配置文件后,立刻生效

  • 对可能用到的数据格式都支持,如json、text、xml、file等。

四、什么场景会用到

  • 模拟第三方接口的返回
  • 后端接口还没有开发完毕,前端想要进行联调
  • 接口测试过程中,可能某些接口依赖有问题,也可以使用mock

五、Moco的原理

  • 根据json配置文件,启动一个http的服务,监听指定的端口

六、环境准备

  • jdk1.8https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  • mocohttps://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/image

七、环境搭建

  • 安装jdk,配置环境变量
  • 把moco-runner-1.5.0-standalone.jar 和配置文件如moco.json放同一目录image

八、Moco配置文件

moco配置文件格式必须是json格式。配置文件是个数组,也就是说,可以在一个文件中配置多个接口的请求和响应

配置文件常用字段image

九、启动

# http 指定协议
# -p 指定端口
# -c 指定配置文件
java -jar moco-runner-1.5.0-standalone.jar http -p 8088 -c moco.json

十、示例

  • demo1
[{"description":"这是一个moco例子","request":{"uri":"/demo"},"response":{"text":"Hello,Moco","status": "200"}}
]
  • get请求,不带参数
[{"description":"这是一个get请求,不带参数","request":{"uri":"/goods","method": "get"},"response":{"headers": {"Content-Type": "text/plain; charset=GBK"},"text":"这是一个GET请求,不带参数","status": "200"}}
]
  • get请求,带参数
[{"description": "这是一个get请求带参数","request": {"uri": "/goods","method": "get","queries": {"id": "g01"}},"response":{"headers": {"Content-Type": "application/json;charset=utf-8"},"json":{"name": "百世可乐","price": 3},"status": "200"}}]

image

  • post请求,带参数,带的是json参数
[{"description": "这是一个post请求带参数","request": {"uri": "/goods","method": "post","json": {"id": "g01"}},"response":{"headers": {"Content-Type": "application/json;charset=utf-8"},"json":{"name": "百世可乐","price": 3},"status": "200"}}]

image

  • post请求,带headers参数
[{"description": "post请求,带headers参数","request": {"uri": "/goods","method": "post","cookies":{"ssid":"666666"},"headers":{"authorization": "bearer 123456"},"json": {"id": "g01"}},"response":{"headers": {"Content-Type": "application/json;charset=utf-8"},"json":{"name": "百世可乐","price": 3},"status": "200"}}]

image

  • post请求,带forms参数
[{"description": "这是一个post请求,带forms参数","request": {"uri": "/login","method": "post","forms": {"username": "admin","password":"123456"}},"response":{"headers": {"Content-Type": "application/json;charset=utf-8"},"json":{"msg": "登录成功"},"status": "200"}}]

image

  • 重定向
[{"description": "这是一个重定向","request": {"uri": "/redirect","method": "get"},"redirectTo": "http://www.baidu.com"}
]

十一、多配置文件模式

为了模拟多个接口,以及方便管理这些接口,moco-runner增加了配置模式,具体如下:

  • 首先,创建多个接口文件,比如:login.json,index.json
  • 然后,在当前文件夹下创建配置文件,config.json,用于管理接口文件login.json,index.json
  • 最后,用参数-g启动服务

接口文件moco.json

[{"description": "Moco Demo","request": {"method": "get","uri": "/demo"},"response": {"text": "Hello Moco"}},{"description": "users","request": {"method": "get","uri": "/users"},"response": {"headers": {"Content-Type": "application/json;charset=utf-8"},"json": {"code": 200,"msg": "success","data": [{"id": 1,"username": "张三"},{"id": 2,"username": "李四"},{"id": 3,"username": "王五"}]}}},{"description": "这是一个get请求,不带参数","request": {"uri": "/goods","method": "get"},"response": {"text": "这是一个GET请求,不带参数","status": "200"}}
]

接口文件index.json

[{"description": "index","request": {"method": "get","uri": "/index"},"response": {"text": "Hello home"}}
]

配置文件config.json

[{"include":"index.json"},{"include":"moco.json"}]

十二、中文乱码问题

加上参数 -Dfile.encoding=utf-8java -Dfile.encoding=utf-8 -jar moco-runner-1.5.0-standalone.jar http -p 8088 -c moco.json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/153788.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【附代码】使用Shapely计算多边形外扩与收缩

文章目录 相关文献效果图代码 作者:小猪快跑 基础数学&计算数学,从事优化领域5年,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法 本文档介绍如何使用 Shapely Python 包 计算多边形外扩与收缩。 如有错误&…

sface人脸相似度检测

sface人脸相似度检测,基于OPENCV,人脸检测采用yunet,人脸识别采用sface,支持PYTHON/C开发,图片来自网络,侵权请联系本人立即删除 yunet人脸检测sface人脸识别,检测两张图片的人脸相似度

Redis-01基本数据结构

1、String 1.1、介绍 String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整数或浮点数),value 最多可以容纳的数据长度是 512M 1.2、…

基于springboot实现在线动漫信息交流分享平台项目【项目源码+论文说明】计算机毕业设计

基于springboot实现在线动漫信息交流分享平台演示 摘要 随着社会互联网技术的快速发展,每个行业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线动漫信息平台当然也不能排除在外,随着网络技术的不断成熟&#x…

基于拉丁超立方法的风光场景生成与削减

代码链接:基于拉丁超立方法的风光场景生成与削减 摘要:与蒙特卡洛法不同,拉丁超立方采样改进了采样策略能够做到较小采样规模中获得较高的采样精度,属于分层抽样技术,设定风光出力遵从正态分布normrnd,从而…

【LeetCode】——链式二叉树经典OJ题详解

主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法头疼记:算法专栏…

关于 打开虚拟机出现“...由VMware产品创建,但该产品与此版VMwareWorkstateion不兼容,因此无法使用” 的解决方法

文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/133678951 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

网工内推 | base郑州,上市公司,最高15薪,五险一金全额缴

01 四方达 招聘岗位:网络工程师 职责描述: 1、负责公司数据中心(机房)的管理与运维工作。 2、负责公司服务器、路由器、防火墙、交换机等设备的管理、以及网络平台的运行监控和维护; 3、负责公司服务器运维管理工作、…

17基于matlab卡尔曼滤波的行人跟踪算法,并给出算法估计误差结果,判断算法的跟踪精确性,程序已调通,可直接运行,基于MATLAB平台,可直接拍下。

17基于matlab卡尔曼滤波的行人跟踪算法,并给出算法估计误差结果,判断算法的跟踪精确性,程序已调通,可直接运行,基于MATLAB平台,可直接拍下。 17matlab卡尔曼滤波行人跟踪 (xiaohongshu.com)

androidStudio第一次运行报错无法运行

安卓第一次运行失败 大家好,我使用androidStudio新建了一个测试demo第一次运行,结果失败了,显示如下图: 然后查了各种方法,都是没有用,最后 历经困难,还是找到了,原来是 gradle的依…

CV计算机视觉每日开源代码Paper with code速览-2023.10.9

精华置顶墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV51,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】Entropic Score metric: Decoupling Topology and…

2023.10.8 基本 Thread 线程详解

目录 Thread 常见构造方法 Thread 常见属性 创建一个 Thread 线程 使用 jconsole 命令观察线程 中断一个 Thread 线程 等待一个 Thread 线程 休眠当前 Thread 线程 让出当前 Thread 线程的 CPU 资源 线程的状态 Thread 常见构造方法 方法说明Thread()创建线程对…

天然泉水除砷技术解析,除砷树脂

天然地下水和地表水都可能含有砷,地下水含砷量高于地表水。而地下水砷超标的原因一种是由于自然原因造成的,主要是含砷矿物风化溶解造成的地下水污染。由于含砷矿物分布广泛,这种污染在世界各地都有发生,尤其在南亚、南美等地区&a…

java基础 日期工具类

目录结构: DateUtils.java package dateStudy; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class DateUtils {private static final String FORMAT_1"yyyy-MM-dd HH:mm:ss";//私有方法&#xf…

如何正确方便的理解双指针?力扣102 (二叉树的层序遍历)

双指针,顾名思义就是指针的指针。 在此之前我们需要先理解单指针 (简称为指针)。指针很简单,直接上例子:例:现有两个变量,a10,b20. 要求:交换他们的值,输出的结果应为a20…

Flink之Watermark源码解析

1. WaterMark源码分析 在Flink官网中介绍watermark和数据是异步处理的,通过分析源码得知这个说法不够准确或者说不够详细,这个异步处理要分为两种情况: watermark源头watermark下游 这两种情况的处理方式并不相同,在watermark的源头确实是异步处理的,但是在下游只是做的判断,这…

LLaVa大模型关键技术及在线演示

LLaVA,一种新的大型多模态模型,称为“大型语言和视觉助手”,旨在开发一种通用视觉助手,可以遵循语言和图像指令来完成各种现实世界的任务。 这个想法是将 GPT-4 等大型语言模型 (LLM) 的强大功能与 CLIP 等视觉编码器相结合&#…

【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。

操作环境: MATLAB 2022a 1、算法描述 1. 16APSK调制解调 16APSK (16-ary Amplitude Phase Shift Keying) 是一种相位调制技术,其基本思想是在恒定幅度的条件下,改变信号的相位,从而传送信息。 - 调制:在16APSK中&am…

Transformer预测 | Pytorch实现基于Transformer的锂电池寿命预测(NASA数据集)

文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…