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.hqwc.cn/news/129914.html

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

相关文章

linux安装filebeat并收集日志到elasticsearch

摘要: 通过filebeat收集服务器上各个应用的日志到elasticsearch,通过tags区分不同的应用创建不同的索引保存日志。 官网地址: https://www.elastic.co/cn/downloads/past-releases#filebeat 安装步骤: 1:下载并解…

asp.net网上销售系统VS开发mysql数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 网上销售系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为mysql,使用c#语言开发 aspnet 网上销售系统1 二、功能介绍 前台功能…

第二证券:汽车产业链股活跃,恒勃股份、博俊科技“20cm”涨停

轿车产业链股9日盘中走势活跃,截至发稿,恒勃股份、博俊科技“20cm”涨停,德迈仕涨超17%,上声电子涨超14%,川环科技涨超10%,圣龙股份、科华控股、沪光股份、上海沿浦、日盈电子、赛力斯等均涨停。 工作方面…

用Nginx搭建一个可用的静态资源Web服务器

sudo wget http://dlib.net/files/dlib-19.24.tar.bz2下载需要的文件。 sudo tar jxf dlib-19.24.tar.bz2进行解压。 sudo mkdir /nginx/dlib在nginx安装目录/nginx创建一个新的目录dlib。 配置文件nginx.conf里边的内容如下: worker_processes 1; events {…

Astronomaly:利用 CNN 和主动学习识别 400 万张星系图像中的异常

星系中的异常现象是我们了解宇宙的关键。然而,随着天文观测技术的发展,天文数据正以指数级别增长,超出了天文工作者的分析能力。 尽管志愿者可以在线上参与对天文数据的处理,但他们只能进行一些简单的分类,还可能会遗漏…

【轻松玩转MacOS】安全隐私篇

引言 这一篇将介绍如何保护MacOS的安全,包括如何设置密码,使用防火墙,备份数据等重要环节,避免因不慎操作或恶意攻击带来的安全风险,让你的MacOS之旅更安心、更放心。 一、设置密码:保护你的MacOS的第一道…

MySql运维篇---009:分库分表:垂直拆分、水平拆分、通过MyCat进行分片,读写分离:一主一从、 双主双从

3.分库分表 3.1 介绍 3.1.1 问题分析 使用单个数据库存储所有的数据,如果磁盘和内存和内存不足了可以增大磁盘和内存,但是对于一台服务器的磁盘和内存不可能无限制的扩张下去,它是受我们服务器的硬件影响的,如果说数据库所存储…

sentinel的启动与运行

首先我们github下载sentinel Releases alibaba/Sentinel (github.com) 下载好了后输入命令让它运行即可,使用cmd窗口输入一下命令即可 java -Dserver.port8089 -jar sentinel-dashboard-1.8.2.jar 账号密码默认都是sentinel

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 (Log4j – Apache Log4j 2)是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并参考了Logback中优秀的设计,同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

现货黄金指标之王是什么

很多现货黄金投资在日常看盘的交易的时候,都会借助各种各样的技术指标来辅助自己的分析,但其实好用的技术指标两三个就足够了。如果有那么一个指标,可以帮助投资者辨清趋势,把握行情走势的大局,一定会是大受市场欢迎。…

CSS 布局案例: 2行、多行每行格数不定,最后一列对齐

布局期望的效果如下&#xff1a; 第二行最后一格与第一行最后一格对齐。每行格数不定。自动拉伸填充整个宽度 实现&#xff1a; 一开始打算用display:flex&#xff0c; 自动分散&#xff0c;但是第二行对齐第一行最后一格控制不了。 使用grid fr均分单位控制。 <!DOCTYPE…