Moco 详解

一、下载及安装:

运行环境:

  • JAVA环境
  • linux

下载地址:https://github.com/dreamhead/moco

下载下来的是一个jar包,如:moco-runner-0.12.0-standalone.jar

把这个jar包上传到linux服务器上,然后在与moco-runner-0.12.0-standalone.jar同级的目录下创建 foo.json 文件:

1[ 2 { 3 "response" : 4 { 5 "text" : "Hello, Moco" 6 } 7 } 8]

Moco的运行非常简单,只需要一行命令即可: java -jar <path-to-moco-runner> http -p <monitor-port> -c < configuration -file>

  • <path-to-moco-runner>:moco-runner-0.11.0-standalone.jar包的路径

  • <monitor-port>:http服务监听的端口

  • <configuration -file>:配置文件路径

    java -jar moco-runner-0.12.0-standalone.jar http -p 9999 -c foo.json

通过浏览器访问服务器的9999端口:

返回正确就说明Moco服务搭建成功了。

虽然说服务运行没问题了,但是总觉得启动和停止很麻烦,现在用shell来写一个启动和停止的脚本

启动start.sh:

1#!/bin/bash 2dirWiremock=`pwd` 3getCount=`ps -ef | grep "moco-runner" | grep -v "grep" |wc -l` 4wiremock_jar=${dirWiremock}/moco-runner-0.12.0-standalone.jar 5port=9999 6exe_name=moco-runner 7if [ $getCount -ne 0 ]; then 8 echo $exe_name is already running with $ssu_pid_count processes 9 echo $exe_name started failed 10 exit 1; 11else 12 nohup java -jar ${wiremock_jar} http -p ${port} -c foo.json & 13 echo "Start success!......" 14fi

停止stop.sh:

1#!/bin/sh 2exe_name=moco-runner 3 4# 进入可执行目录 5base_path=$(cd `dirname $0`; pwd) 6cd $base_path 7 8# 停止进程 9exe_pid_path=`pwd` 10exe_pid_list=`ps -ef | grep $exe_name|grep -v 'grep'|awk '{print $2}'` 11our_pid_list="" 12for exe_pid in $exe_pid_list 13do 14 pid_path=`pwdx $exe_pid | awk '{print $2}'` 15 if [ "$pid_path"x == "$exe_pid_path"x ]; then 16 our_pid_list=$our_pid_list" "$exe_pid 17 fi 18done 19 20if [ "$our_pid_list"x != "x" ]; then 21 kill -9 $our_pid_list 22 echo $exe_name process"$our_pid_list" killed 23else 24 echo $exe_name is not running 25fi

运行shell脚本,启动和停止就方便多了。

二、Moco配置

启动服务之后,必然会根据需求stub出各种各样接口反馈,我们会把这个配置放在一个json文件中,启动Moco的时候,需要指定使用的配置文件路径,这样配置就可以生效了。Moco服务可以检测到配置文件的变更,假如你修改了配置文件,不需要重新启动Moco,服务照样可以生效。更详细的配置介绍请查看:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

配置文件的工作原理大致如下: 

如何在配置文件添加注释

json不支持注释,想要添加注释的话,可以在description字段中加入描述 
image_1aukces4c1bld1ilv120vtc713rk1g.png-21.5kB

约定请求Body

image_1aukcg2219uc4a89v2eia169i1t.png-63.5kB

约定接口的uri

image_1aukcgr1h1pvg1iqede15mtjtv2a.png-35.2kB

约定请求参数

image_1aukcheemo95pmp1q351n0vjq12n.png-40.6kB

约定请求方法

image_1aukci164cq717av19nc1cp0b0q34.png-32.7kB

约定HTTP版本

image_1aukcin2p1cnoenf1nfe1hn895u3h.png-38.2kB

约定请求头部

image_1aukp23qh1io01g611k67l49ie9.png-47.6kB

约定cookie

image_1aukp2ppph2215lv4mp165n1begm.png-45.5kB

约定请求form

image_1aukp3eip1unv1s971l1s8ke1pr713.png-47.1kB

表单可以添加多项,多项的时候,必须全部匹配,接口才算匹配成功

约定以指定xml作为请求body

image_1aukp4l8rblj9p712cq13au1nlc1g.png-69.9kB

用xpath对请求进行匹配

image_1aukp54ud10dcbhi1a981sii1j1t.png-47.8kB

约定以指定json作为请求body

image_1aukp62mg1c1p1ilpa371fg71okd2a.png-118.5kB

用正则表达式对请求进行匹配

image_1aukp6kjk1cgktok1ksl3pl11ra2n.png-50.1kB

匹配操作

image_1aukp79rk6stah19u7138o10df34.png-132kB

设置Response content

image_1aukpa21f1nt21hrq15iv5111lcc3h.png-71kB

设置Response 状态码

image_1aukpam111jae1kj31trj1vqau2d3u.png-50.7kB

设置Response HTTP版本

image_1aukpb88b17f119i1oatsdi1pti4b.png-58.3kB

设置Response 头部

image_1aukpboqh15l6ib31gvrcjo1dbq4o.png-45.9kB

设置重定向

image_1aukpca591qrht381uv31cvt43g55.png-39.9kB

设置cookie

image_1aukpcqun1tq911n314fv1o8r12hi5i.png-42.1kB

挂载文件

image_1aukpdacf1sq3p241s14qbqdnb5v.png-34.4kB

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )