一. 插件简介
1.1 背景简介
dubbo-mock.jar插件作用是对dubbo接口的mock,通过dubbo filter + yapi(http接口管理及mock平台,可以用其他mock平台替代)两种技术的结合实现了对dubbo服务无侵入的mock方式
dubbo filter:filter是Dubbo中使用较为频繁的组件,其作用在于对所指定的请求进行过滤,功能非常类似于AOP,可以实现诸如请求过滤器和全局异常捕获器等组件
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平台存档
存档请求形成自动化用例并回放请求