mock-server

1、概述:

moco是一个简单搭建模拟服务器的程序库/工具,主要用于测试集成。这个基于 Java 开发的开源项目已在 Github 上获得了不少关注。mock-server用途就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况。

例如,当前端开发在开发页面的时候,需要服务端提供API接口此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据。

2、运行方式:

moco目前支持多种使用方式,最基本的方式是两种:API和独立运行。本文主要讲解独立运行的sever搭建。

独立运行:moco主要是通过将配置放入json文件中,启动moco的时候,需要指定使用的配置文件路径,这样配置就可以生效了。

3、MOCO的不足:

moco的使用很简单,配置也很方便,目前更是提供了http、rest、socket服务。但是也仅仅是能stub出接口,模拟出简单的场景。如果接收到请求后需要做一些处理,如需查询数据库、进行运算、或者一些复杂的操作,就无能为力了。所以是否选用moco,就取决于开发者是否只是需要一个简单的模拟服务器

4、MOCO搭建准备:

Step1:配置jdk:打开cmd窗口,通过java –version 检查是否成功安装jdk。

Jdk下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择适合自己电脑系统的版本进行下载安装。

Jdk安装方法:
● windows:http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html
● linux:http://www.cnblogs.com/caosiyang/archive/2013/03/14/2959087.html

如果出现以下信息则说明安装正确。 

Step 2:下载moco-runner jar文件,目前版本是 0.11.0:
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/moco-runner-0.11.0-standalone.jar

MOCO基础搭建
Step1:新建文件夹,将2.2中下载的moco-runner-0.11.0-standalone.jar文件放置此目录,并在该目录新建json文件,命名为foo,此文件作为moco的配置文件。

Step2:编写配置文件,像下面这个样子描述你的moco 服务的配置:

Step3:通过配置文件 foo.json 启动 moco服务在命令行输入:
java -jar moco-runner-<version>-standalone.jar http -p 12306 -c foo.json
其中< version> 替换为下载的 Jar 包的版本,此处为 0.11.0 ,所以执行:java -jar moco-runner-0.11.0-standalone.jar http -p 12306 -c foo.json
-p 指定 Moco 服务端口。

Moco-runner成功启动如下图:

需要注意的是,执行以上的命令,需要先 cd 到 Jar 文件所在的目录,然后 foo.json 文件也需要放在同一个目录才行,否则会报错。或者可以通过使用 Jar 文件和 .json 文件绝对路径的方式也可以。

json 文件路径也可以使用相对路径,如:./api/foo.json

用postman访问moco-runner sever:

如果他人也想访问,需要提供本机IP就可以了。

启动服务之后,必然会根据需求stub出各种各样接口反馈, moco服务可以检测到配置文件的变更,假如你修改了配置文件,不需要重新启动moco,服务照样可以生效。

5、进阶操作:

参考moco官方文档:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md,以下列举几个较为常用的配置。

1.url:在request中设置uri,访问 http://localhost:12306/foo ,就可以获取到内容bar。
[
    {
        "request" : {
          "uri" : "/foo"
        },
         "response" : {
          "text" : "bar"
        }
    }
]

2. 带有参数的请求, 启动浏览器,并访问http://localhost:12306/foo?parm=blash
[
    {
      "request" : {
          "uri" : "/foo",
          "queries" : {
              "param" : "blash"
            }
        },
      "response" : {
          "text" : "bar"
        }
    }
]

3.返回特定的status
[
    {
    "request" :
    {
      "uri" : "/foo"
     },
    "response" :
    {
      "status" : 503
    }
    } 
]

4.返回json数据
[
  {
      "request" :{
              "uri": "/getJson"              
       },
      "response" :{
          "json": {
                "foo": "bar"
               }              
      }
   }
]    

5.通过不同的请求方式返回不同的参数,以下通过POST和GET返回不同的参数。
[
   {
     "request": {
     "uri": "/test1",
     "method": "POST"
     },
     "response": {
     "json": {
     "code":"200",
     "desc":" POST success"
     }
   }
   },   
   {
      "request": {
      "uri": "/test1",
      "method": "GET",
    },
      "response": {
      "json": {
      "code":"200",
      "desc":" GET success "
    }
    }
   }
]  

6.Json请求参数
[
   {
        "request": {
            "uri": "/json",
            "json": {
                "foo": "bar"
            }
        },
        "response": {
            "text": "foo"
        }
    }

]

 

6、配置文件:

moco 支持在配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。

例如你有两个不同路径的 API:http://xxx.com/path1/login 和 http://xxx.com/path2/pay (登录和支付接口)。

按照上一小节所讲,我们可以写好 login 和 pay 的两个配置文件(或写在一起),分别设置 request 的 url 为 /path1/login 和 /path2/pay 。如果需要测试的接口很多,则不利于管理,且 path1、path2 这么混乱的分布于不同的配置文件中,对于以后想要更改也很不方便。

● 正确的姿势应该是这样的:

同样写好 login.json 和 pay.json 两个配置文件,然后写一个配置文件 ,配置如下:

// config.json
[
   {"context":"/path1", "include":"login.json"},
   {"context":"/path2", "include":"pay.json"}
]

login 和 pay 两个文件没有特殊要求,和之前的写法一样。比如:

// pay.json
[
    {
        "request": {
            "uri": "/pay",
            "method": "POST",
            "json": {
                "phone":"18688886666",
                "password":"123456"
            }
        },
        "response": {
            "json": {
                "state":"0"
            }
        }
    }
]
// login.json
[
    {
        "request": {
            "uri": "/login",
            "method": "POST",
            "json": {
                "amount":"100"
            }
        },
        "response": {
            "json": {
                "state":"0"
            }
        }
    }
]

然后启动 moco 服务的命令是:
java -jar moco-runner-<version>-standalone.jar http -p 12306 -g config.json

要注意的是,最后指定的参数是 -g config.json !

如果只是想引入多个 json 文件的话,全局配置文件中可以不使用 context 字段。比如:
// 不使用 context 字段的 config.json。
[
    {"include":"login.json"},
    {"include":"pay.json"}
]

猜你喜欢

转载自www.cnblogs.com/summerxye/p/10975259.html