本文介绍一种数据mock方案,实现同事间共享mock数据,客户端开发不再依赖后端环境,提升开发效率。
背景
联调是必不可少的过程,但经常因为接口未按时提供、环境未正常启动导致需求延期。
应对以上情况,开发一般使用mock数据进行测试,然而大量的mock数据并没有得到统一的管理,后续若有其他同事需要这份数据,必须抓包,重新配置mock数据。
目标
针对以上痛点,我决定采取一定措施简化mock流程,保留mock数据,实现以下功能:
- 组内同事共享mock数据
- 支持导出配置,借助 Charles Rewrite 功能快速实现mock需求
- 下发配置,客户端接入配置,便可在客户端一键切换mock环境
实现
数据存储
因共用一份数据,所以必须入库存储。平台使用mysql存储数据。
主体信息:分组(group
)、域名(host
)、接口(api
)、参数(params
)、内容(data
)、描述(desc
)
辅助信息:版本(version
)、创建用户(c_user
)、更新用户(u_user
)、创建时间(create_time
)、更新时间(update_time
)
说明:版本默认值为1,用户每更新1次加1。
数据映射
用通配符拦截请求,提取请求uri,查询配置的返回数据,封装返回。
以POST接口为例(GET接口类似):
映射伪代码如下:
// 取出所有包含`api`的mock 配置
mockModels = mockMapper.getMockDataByApi(requestURI)
for (MockModel mockModel : mockModels) {
if (TODO: 请求参数和配置参数匹配) {
TODO :封装返回数据
break;
}
}
}
TODO: 返回数据
添加配置
在mock数据平台点击添加API,跳转至如下页面:
根据提示填写完整接口信息后,点击提交,即可创建一条新的mock配置。
更新配置
mock数据平台首页点击mock配置,即可进入编辑页,如下图:
编辑mock配置信息,点击提交即可。配置实时生效,随时mock各种异常情况。
Charles配置文件
每次新增或修改API mock配置,均会重新生成一份Charles Rewrite配置,配置文件格式如下:
1 | <?xml version="1.0" encoding="UTF-8"?> |
使用
- Charles导入配置
打开Charles
–> Tools
–> Rewrite
–> Import
, 选择上面生成的配置文件,导入成功。
接下来便可根据需要启用接口,实现数据mock