需求背景:公司的业务系统有支付路由、支付服务模块,支付服务模块对接了很多支付公司、银行,用于放款、代扣。支付服务模块是dubbo框架开发的,与支付公司、银行对接就涉及了联调测试,银行和支付公司的接口文档、接口都是现成的,经历了对接N多公司了,几乎完善无BUG,所以对接支付公司、银行的联调测试,只要按着接口文档模拟入参,出参即可。而已支付公司、银行不会有那么多时间陪你联调测试、压力测试,所以这个时候就需要一个mock系统了,测试人员和开发人员,在mock系统上配置好了各个接口(银行和支付公司多数是使用交易码区别,URL地址是统一一个)的入参、出参,然后调支付服务的时候,原来是请求第三方(银行、支付公司)URL,请求URL也是一个配置文件里的配置项或存在数据库表里一个配置项,测试和开发人员可以把原来调第三方URL的配置项改成了自己mock系统里配置了的接口的URL,通过这种方式模拟联调测试、压力测试(记住压力测试是不能直接调第三方URL的,会被喷的,而且第三方公司的系统也会有接口调用次数限制)。

1、mock系统选型,我列了以下几种:mock.js、easy-mock、eolinker、YAPI、DOCCLEVER,个人觉得最适合以上需求场景的mock系统是DOCCLEVER。原因很简单,DOCCLEVER支持各种请求头格式、请求报文格式、返回报文格式,而已银企直连这种对接的接口大多数都是xml格式的请求报文、xml格式的返回报文,xml里面通过交易码区分。DOCCLEVER是node js语言开发的,数据库是mongodb,支持私有化部署,在github上开源,有很多大公司都在使用。

github地址为:https://github.com/sx1989827/DOClever

官网地址为:http://www.doclever.cn/controller/index/index.html

2、直接下载一份源码,我是使用master版本的,求稳定的可以使用6.2.0版本

mock环境源码 JAVA_mock

 

3、找公司的运维分配2台linux服务器,例如ip为13.14.52.0、13.14.52.1

4、在13.14.52.0 上安装mongodb,mongodb安装教程:https://www.runoob.com/mongodb/mongodb-linux-install.html

5、在13.14.52.1上安装node js,node js安装教程:https://www.runoob.com/nodejs/nodejs-install-setup.html ,这里推荐的是linux,安装好了node js,运行命令:node -v ,出现下图提示,说明安装成功。

mock环境源码 JAVA_mock_02

6、在13.14.52.1,新建一个目录mock,把从git上下载的DOClever源码上传到改目录,记得修改目录名字为DOClever,使用root账号登录,拥有最大权限。

mock环境源码 JAVA_mock_03

7、cd /root/mock目录,在该目录下执行命令:node /root/mock/DOClever/Server/bin/www,程序会初始化,提示你填写mongodb的连接地址,此时你在该界面直接输入你安装好的mongodb的连接地址,下一步会提示你输入你url web访问的端口号,此时你输入一个端口号,记住不要输入在该机器上已经被占用的端口,否则初始化失败,提示端口号被占用。另外不要那么二,每个人的安装目录都不一样,node /root/mock/DOClever/Server/bin/www 这个命令的前缀就是你的安装目录,安装好了,可以ps -ef|grep DOClever ,查看进程号,kill -9 进程号,杀进程,然后以nohup 命令启动。命令为nohup node /root/mock/DOClever/Server/bin/www  ,改目录下会出现nohup.out文件,可以tail -f nohup.out查看启动日志。

8、打开浏览器,通过ip+端口访问mock系统,以下是安装好的截图,出现该页面,然后注册,登录。

mock环境源码 JAVA_mongodb_04

8、在系统页面新建一个测试项目,进入测试项目,新建一个测试接口,如以下截图

mock环境源码 JAVA_mongodb_05

9、保存,运行,生成一个url,如下图

mock环境源码 JAVA_Server_06

mock环境源码 JAVA_mock环境源码 JAVA_07

10、使用postman访问url,成功即可,然后调第三方的时候直接调配置好的mock系统的url。访问地址为ip+端口+/mock/5d818744583b472ca5f05d0b/pay,访问效果截图

mock环境源码 JAVA_mock环境源码 JAVA_08