在开发过程中,经常会使用到一些http网络接口,而这部分功能通常是由第三方开发团队或者是后端同事进行开发的,在我们开发时不能给我们提供服务,这为我们的联调和测试造成了麻烦,这个时候就需要使用到mock测试。
Moco是一个简单搭建模拟服务器的程序库/工具:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起请求满足一个条件时,它就给回复一个应答。

二、安装&配置
Jar包下载:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/moco-runner-0.11.0-standalone.jar
Moco文档:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
启动命令:
java -jar ./moco-runner-0.11.1-standalone.jar http -p 9090 -c all.json
-p 就是port 端口号, -c 后面就是配置接口内容的json文件。
启动成功效果:


三、接口配置&测试
3.1 第一个简单的请求:
all.json文件中增加以下request&response内容
注意:moco模拟请求返回中文乱码问题,添加响应头编码格式为gbk,就可以解决返回结果中文乱码
测试接口请求结果:

3.2 Get请求:
测试接口请求结果:http://localhost:9090/getWithParam?name=张三&sex=20

3.3 Post请求:
测试接口请求结果:

注意:带中文值的入参,如果换成x-www-form-urlencoded格式(post请求的默认格式),则会请求失败:


这是Moco目前的问题,没有解决,英文的入参则没有问题:

3.4 返回值为Json格式的请求:
测试接口请求结果:

3.5 带cookie信息才能访问的post请求:
测试接口请求结果:


3.6 重定向请求:
测试接口请求结果:

3.7 前后端联调mock实战:
1. moco本地运行起来之后,后端server地址: 127.0.0.1:9090
2. 通过前端页面操作请求来调用mock接口试验:


四、搭建Moco服务器供其他人调用
既然本地可以使用,那么放在服务器上去运行,则可以让更多的人(包括研发)使用,提供一个简易的mock服务。下载Moco的包到服务器上并解压,然后运行:

访问Moco服务:http://服务器IP:9090/postDemo

服务器上mock返回日志:

注意点:1. 前面说过本地运行时,如果返回内容有中文,需要加上一段header指定格式为gbk才能正常显示中文。测试时发现服务器上运行,mock返回内容Json文件中,反而需要去掉这一段,返回内容才能正常显示中文,有这一段反而会中文显示乱码:
2. 如果服务器上想让mock服务一直运行,使用命令:
如果只是在前面加nohup,会报错:
原因是nohup执行会产生日志,默认是写到nohup.out文件中,文件没有写入权限。需要配合后面的命令 > /dev/null 2> /dev/null & 将 nohup 的日志输出到 /dev/null,这个目录类似于linux的一个黑洞,会让所有到它这的信息自动消失。
如果想保留日志,可以新建一个文件,比如moco.log, 然后nohup时指定日志写到moco.log中:
日志信息记录如下:

673

被折叠的 条评论
为什么被折叠?



