Java mock客户端数据_CatMock: Java 下使用 mock.js 生成虚拟数据

CatMock是一个Java封装库,利用内置的JavaScript引擎调用mock.js脚本,实现Java环境下与mock.js语法一致的接口数据模拟。它支持生成Java对象、列表以及字符串,可复用接口设计阶段的项目资产。通过extend方法,还能扩展自定义函数,如添加随机星座名称的功能。
摘要由CSDN通过智能技术生成

CatMock

CatMock 是一个mock.js的 Java 封装库。使用 JDK 自带的 js 脚本引擎直接调用 mock.js 脚本,实现对 mock.js 的统一。

为什么采用这样的方案?

在开发互联网应用时,前后端在开发前使用接口管理平台设计接口。市面上常见的接口管理平台大部分使用了 Mock.js 作为虚拟接口和接口测试的工具。

设计接口时,接口的定义是项目的重要资产。Mock.js 能很好地完成后端接口的单元测试。但后端在 CI/CD 进行集成测试时,往往需要自行编写测试用例,需要使用其它方式生成虚拟数据,无法复用接口设计阶段的项目资产。

于是开始尝试使用纯 Java 编写一个兼容 Mock.js 语法的 Mock 工具:为了实现拓展自定义函数的功能,曾设计使用 Java 的 Function 接口对象作为用户自定义传入的函数来使用,但最后放弃了这一想法,因为写工具的初衷在于复用接口设计阶段的项目资产,而 Function 需要后端重新编写。

最后,选择在 Java 中使用 Java 内置的 JavaScript 引擎直接调用 mock.js ,这样能保证和 mock.js 统一,保证接口设计阶段的项目资产能被复用。

Maven

cn.myzju.mock

CatMock

1.0.1

使用说明

获取 CatMock 对象

//使用内置的 mock.js 文件初始化

CatMock catMock = new CatMock();

//使用外置的 mock.js 文件进行初始化

CatMock catMock = new CatMock(new FileReader("{path}/mock.js"));

Random

传入参数:function或function('args'),返回类型为 String

catMock.random("string"); //👉P^7

catMock.random("lower(\"HELLO\")");//👉hello

当前已知不兼容函数:

dataImage()

Mock

生成 Java 对象

传入字符串必须以{开始,并以}结束

Person person = catMock.mockObject("{\"name\":\"@string\"}",Person.class);

生成 Java List

传入字符串必须以[开始,并以]结束

List persons = catMock.mockArray("[{\"name\":\"@string\"},{\"name\":\"@string\"}]",Person.class);

生成 String

mock 方法传入非 JSON 格式的字符串(如下e.g.1所示)时,前后一定要加上单引号。

//e.g.1

catMock.mock("'@name'");//👉Anna Jackson

//e.g.2

catMock.mock("{\n'regexp|1-5': /\\d{5,10}\\-/\n}");//👉{"regexp": "5912165-6588485-0462848-"}

Extend

生成 CatMock 对象后,可以通过 extend 加载自定义函数。

例如新增一个名为constellation,用于获取随机星座名称的方法,JavaScript 代码如下:

{

constellation: function(date) {

var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']

return this.pick(constellations)

}

}

在 CatMock 中,将脚本代码直接以 String 类型传入 extend 函数:

CatMock catMock = new CatMock()

catMock.extend("{\n" +

" constellation: function(date) {\n" +

" var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']\n" +

" return this.pick(constellations)\n" +

" }\n" +

"}");

catMock.random("constellation")//👉水瓶座

catMock.mock("'@constellation'")//👉白羊座

Development Plan

mock.js 后续版本的兼容

变量容器:容器内可以存储各种变量,并能通过xxx.xxx[index].xxx的 key 值进行调用容器内的变量

License

CatMock is available under the terms of the MIT License.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值