Mock工具之Moco使用

news/2024/10/21 21:28:19/

一、什么是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.ppmy.cn/news/1145409.html

相关文章

Kafka集群架构设计原理详解

从 Zookeeper 数据理解 Kafka 集群工作机制 这一部分主要是理解 Kafka 的服务端重要原理。但是 Kafka 为了保证高吞吐,高性能,高可扩展的三高架构,很多具体设计都是相当复杂的。如果直接跳进去学习研究,很快就会晕头转向。所以&am…

Java中的枚举是什么?

Java枚举详解 枚举(Enum)是Java编程语言中的一种特殊数据类型,它用于表示一组具名的常量。枚举提供了一种更加类型安全和易于理解的方式来表示常量值,使代码更加清晰和可维护。 为什么需要枚举? 在介绍Java枚举的具…

【【萌新的SOC学习之重新起航SOC】】

萌新的SOC学习之重新起航SOC ZYNQ PL 部分等价于 Xilinx 7 系列 FPGA PS端:Zynq 实际上是一个以处理器为核心的系统,PL 部分可以看作是它的一个外设。 我们可以通过使用AXI(Advanced eXtensible Interface)接口的方式调用 IP 核,系统通过 AX…

http请求工具类

一、添加依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.1</version> </dependency> <dependency><groupId>com.alibaba</groupId><artifactI…

285_C++_web提取AI告警信息JSON格式

struct Cache_t {AIAlarmFaceInfo Face;AIAlarmPlateInfo Plate;SAISnapedObjInfo Object;SharedCArray Common;int Type; };struct Client_t {Client_t() : AlarmCnt(HA

SparkSQL外部数据源

1.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景。 - CSV - JSON - Parquet - ORC - JDBC/ODBC connections - Plain-text files 1.2 读数据格式 所有读取 API 遵循以下调用格式: // …

C++ 类和对象(一)

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完 成。 …

配置Hive使用Spark执行引擎

配置Hive使用Spark执行引擎 Hive引擎概述兼容问题安装SparkSpark配置Hive配置HDFS上传Spark的jar包执行测试速度对比 Hive引擎 概述 在Hive中&#xff0c;可以通过配置来指定使用不同的执行引擎。Hive执行引擎包括&#xff1a;默认MR、tez、spark MapReduce引擎&#xff1a; 早…