• 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"}
    ]

  • 相关阅读:
    [ jquery 选择器 :nth-last-child ] 选取属于其父元素的不限类型的第 n 个子元素的所有元素,从最后一个子元素开始计数
    [ jquery 选择器 :nth-child ] 选取匹配其父元素下的第N个子或奇偶元素
    [ jquery 选择器 :first :first-child ] 实例分析: :first :first-child 之间在元素选取方面的区别
    [ jquery 位置选择器 :first-child :last-child ] 强化说明:选取属于其父元素和所有兄弟元素中子元素集合中处于第一个(最后一个)位置上符合条件的元素
    [ jquery 位置选择器 :first :last ] 强化说明:获取匹配的第一个(最后第一个)元素
    [ jquery 过滤器 is(expr | jqObj | ele | function) ] 此方法用于在选择器的基础之上根据选择器 DOM元素或 jQuery 对象来检测匹配元素集合
    PAT 甲级 1009 Product of Polynomials
    PAT 甲级 1003 Emergency DFS
    PAT 甲级 1002 A+B for Polynomials
    PAT 甲级 1001 A+B Format
  • 原文地址:https://www.cnblogs.com/summerxye/p/10975259.html
Copyright © 2020-2023  润新知