一. 插件简介

1.1 背景简介

dubbo-mock.jar 插件作用是对 dubbo 接口的 mock,通过 dubbo filter + yapi(http 接口管理及 mock 平台,可以用其他 mock 平台替代) 两种技术的结合实现了对 dubbo 服务无侵入的 mock 方式

dubbo filter:filter 是 Dubbo 中使用较为频繁的组件,其作用在于对所指定的请求进行过滤,功能非常类似于 AOP,可以实现诸如请求过滤器和全局异常捕获器等组件

yapi 传送门:yapi demo

1.2 工作流程图

dubbo-mock.jar 插件工作流程图如下图所示:

二. 插件使用

dubbo-mock.jar 插件有两种使用方式 1.tomcat 内加载调用 (注意:插件需要放在调用链上游,也就是 consumer 端) 2.本地 ide 内调用,下面介绍两种方式的调用方式。
假设你要 mock 掉的 dubbo 方法接口名为 InterfaceA(该方式是 dubbo provider 端提供),后面两种介绍方式中均已 InterfaceA 为例进行。

2.1 tomcat 调用方式

总共分为 4 步,2.1.1 和 2.1.2 为设置 mock 状态及构造 mock 响应,2.1.3 和 2.1.4 为环境准备

2.1.1 配置 dubbomock 开关接口

在配置 dubbomock 开关之前需要先开通 yapi 账号

1.打开 yapi 接口管理平台地址 yapi 测试平台专区

2.当前页面点击 “高级 mock” 选项,进入高级 mock 页

3.点击当前页面中的 “编辑” 选项,进入如下页面

响应体内开关字段说明
status:on mock 开启
status:off mock 关闭

4.在 Body 响应中的 mockmethodlist(注意接口名和响应结构体需要一致) 中增加你需要 mock 的接口,采用约定大于配置的方式,mock 接口均以:接口名 +MOCK 方式定义,以 InterfaceA 举例,应该新增 InterfaceAMOCK 的配置,增加后点击保存

小技巧:可以在预期内设置合理的延时时间模拟响应超时的场景

2.1.2 定义 dubbomock 接口

1.新建 InterfaceAMOCK 接口,接口名称和接口路径均为 InterfaceAMOCK,访问方式选择 POST,提交完成
2.在 “高级 mock” 中新建一条期望,响应内容为该 mock 接口的数据结构,数据内容可以根据你想 mock 的结果进行修改,保存期望

2.1.3 下载插件

下载 dubbo-mock.jar 插件到本地,下载地址为 百度网盘 提取码:b1fj

2.1.4 上传插件

tomcat 应用的上传目录为:tomcat 根路径/webapps/WEB-INF/lib ,上传后重启 tomcat 服务

2.2 本地调用方式

IDE 中增加依赖
2.重复 2.1.1 和 2.1.2 小节内容

三. 注意事项

引入或者删除 mock 插件,每次都需要重启 tomcat 应用才能生效
复杂数据结构,如结构体嵌套可能会泛型失败 (目前暂无失败案例,存在可能性)
dubbo-mock.jar 包需要放在调用链的上游,也就是 consumer 端
可以设置 dubbo 接口响应超时的异常场景
该插件默认访问的 dubbo 服务注册中心地址是 xxxxx,如果需要修改可以修改 jar 包中的 applicationContext.xml 配置
插件运行成功标注是 log 输出,输出信息如下图所示

四. 待做功能清单

提取入参,根据入参精细化 mock 响应
录制 dubbo 请求在 yapi 平台存档
存档请求形成自动化用例并回放请求


↙↙↙阅读原文可查看相关链接,并与作者交流