mock-针对restful接口,开发mock测试服务
一、为什么使用mock测试
有了Mock,前、后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;
后端与后端之间如果有接口耦合,也同样能被Mock解决;
测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;
不会出现一个团队等待另一个团队的情况。这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以及进度的保证。
二、使用 nginx 解决,不同域名、端口 指向同一个mock站点问题
1.nginx 配置
#转发 mock 请求(如果需要监听多个端口,需配置多个 server 节点)
server {
listen 80; #监听端口
server_name ""; #监听域名 “” 为80端口上所有域名
location / {
proxy_set_header Host $host:$server_port; #mock时需要将此内容设置为客户端实际请求的“域名”和“端口号”
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header xxx-test $host,xxx,111,222; #自定义测试http 头信息
proxy_pass http://localhost:8000/; #转发请求到以下地址
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.nginx 常用命令
sudo nginx
启动nginx
sudo nginx -t
判断配置文件是否正确
sudo nginx -s stop
停止nginx:
sudo nginx -s reload
重启nginx:
三、返回mock试数据
不同待mock的服务地址,如:
http://www.aa.com/d/e/f
http://www.bb.com:8080/a/b/c
http://www.cc.com:9090/1/2/3
都可以通过 nginx 的配置进行转发。在 mock站点中可以得到请求的域名、端口、url地址等信息;
既然可以得到域名、端口、url,就可以很方便的拼接出一个绝对的 URL 地址,有了URL地址就可以确定对应的响应数据了;
至此,开发一个 mock 测试站点的可行性分析已经结束,东西不多但是作用很大。