Mockserver之Moco框架搭建使用

摘要:
此时,Moco框架可以很好的解决这些问题。Request请求有14个固定属性:method,headers,json,factory,uri,text,cookies,xpaths,json_paths,version,file,queries,path_resource,forms。
  • 客户要求进行完整的产品展示,人员和时间都有限,来不及开发后端服务。。。
  • 工期比较紧的项目,前端已开发完成,需要调试,后端接口还未开发完成。。。
  • 公司某个项目依赖于第三方服务,但是第三方服务不方便频繁调用。。。

实际的工作当中,从商务到开发再到测试,经常会遇到上述所说的情况,如此的反复就造成了项目

的进度受限,这被称为短板效应。此时,Moco框架可以很好的解决这些问题。

一、Moco简介

Moco是基于Java开发的开源项目,是一个简单搭建模拟服务器的框架,可以模拟http、https、

socket等协议。其运行原理是Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某

个端口)。当发起的请求满足配置中的条件时,会返回指定的响应数据。

Moco有两种使用模式:API模式和独立运行模式,如果是编写Java应用或者以其它JVM上的语

言编写的应用,可以采用直接调用API的模式;独立运行模式就是下载moco服务jar包,然后根据实

际需要编写配置文件或者进行二次开发。

二、环境配置

1.安装JDK并配置好环境变量,这个不再细说,大家自行百度。

2.下载服务jar包:Moco下载

下载完成的jar包是这样的moco-runner-1.1.0-standalone.jar,本文采用的是最新版本。

三、运行Moco

我们新建一个文件夹,命名为Moco,把jar包放在这里,新建test.json文件,内容如下:

[
    {
        "response": {
            "text": "Hello world!"}
    }
]

在Moco文件夹中点击鼠标右键打开终端,输入以下命令:

java -jar moco-runner-1.1.0-standalone.jar start -p 8080 -c test.json

<path-to-moco-runner>:jar包存放路径,我这里在同一个文件夹,直接输入jar包名字

<monitor-port>:服务监听的端口,设置一个未被占用的端口

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

如下图中所示,表示启动成功:

Mockserver之Moco框架搭建使用第1张

此时,在浏览器中输入:http://localhost:8080可以看到Hello word!,说明我们搭建的模拟

服务器可以正常使用了。

四、Moco常用配置参数

Moco主要致力于服务器的配置,目前只有两种API:Request 和 Response。两种API都有

各自的属性,在配置使用的过程中,一定要遵循这些方法。

Request 请求

有14个固定属性:method, headers, json, factory, uri, text, cookies, xpaths,json_paths,

version, file, queries,path_resource,forms

Response 响应

有12个固定属性:status, attachment, headers, version,factory,file,text, proxy, cookies,

json, latency, path_resource

1.普通的GET请求

{
"description": "查找书籍",
"request": { "method" : "get", "uri" : "/article/book/"}, "response": { "text": "响应内容" } }

2.GET方法带参数

{
"description": "查找具体书籍",
"request": {
"method": "get"
"uri": "/article/book", "queries": { "name": "kaka", "id": "75"} }, "response": { "text": "响应内容"} }

3.POST方法定义请求头和JSON请求体

[
    {
        "description": "登录",
        "request": {
            "uri": "/login",
            "method": "post",
            "headers": {
                "Content-Type": "application/json"},
            "json": {
                "username": "13812345678",
                "password": "123456"}
        },
        "response": {
            "text": "login success"}
    }
]

4.定义响应结果为JSON格式

[
    {
        "description": "登录",
        "request": {
            "uri": "/login"},
        "response": {
            "headers": {
                "Content-Type": "application/json;charset=UTF-8"},
            "json": {
                "code": "00",
                "msg": "登录成功",
                "data": {
                    "userId": 5,
                    "token": "jvuRbbA5EKPzJTfZbDAY9SMzq40YBfws"}
            }
        }
    }
]

五、Moco实战应用

1.单体配置

将所有的接口请求和返回数据写入到同一个json文件中,这种配置适用于请求报文和响应结果

内容不大的情况,如下图所示将整个配置写入到 config.json 中:

[
  {
    "description": "登录",
    "request": {
      "uri": "/login",
      "method": "post",
      "headers": {
        "Content-Type": "application/json"},
      "json": {
        "username": "13312345678",
        "password": "123456"}
    },
    "response": {
      "headers": {
        "Content-Type": "application/json;charset=UTF-8"},
      "json": {
        "retCode": "00",
        "retMsg": "success",
        "data": {
          "userId": 6,
          "token": "ked6jsdXkjdwm37dy6"}
      }
    }
  }
]

在终端中运行启动命令:java -jar D:Mocomoco-runner-1.1.0-standalone.jar start -p 8080 -c config.json

服务启动后,使用接口测试工具调用该配置中的接口。

Mockserver之Moco框架搭建使用第2张

Mockserver之Moco框架搭建使用第3张

2.全局配置

Moco支持在全局的配置文件中引入其他配置文件,我们可以根据实际需要分别定义配置文件,然后在全局

文件中引用。这样,既便于管理,又轻松的解决了接口请求报文或响应数据太大不方便查看的问题。

a.在Moco文件夹中创建login文件夹,在login文件夹中创建 local_login_req.json 和 local_login_res.json 两个

文件;

b.在Moco文件夹中创建global_settings.json 文件

在local_login_req.json 中写入:

[
  {
    "description": "登录",
    "request": {
      "uri": "/login",
      "method": "post",
      "headers": {
        "Content-Type": "application/json"},
      "json": {
        "username": "13300001122",
        "password": "123456"}
    },
    "response": {
        "headers": {
        "Content-Type": "application/json;charset=UTF-8"},
        "file": "./login/local_login_res.json"}
  }
]

在local_login_res.json 中写入:

[
    {
        "retCode":"00",
        "retMsg":"登录成功",
        "data":{
            "userId":2,
            "token":"ked6jsdXkjdwm37dy6xm"}
    }
]

在global_settings.json 中写入:

[
    {
        "include":"login/local_login_req.json"}
]

准备完成后,在当前目录的终端中输入:java -jar moco-runner-1.1.0-standalone.jar start -p 8080 -g global_settings.json

Mockserver之Moco框架搭建使用第4张

Mockserver之Moco框架搭建使用第5张

注意:在启动服务的命令中,-c是加载单体配置文件,-g是加载全局配置文件。两者不可以混淆,否则

配置文件解析会报错。

Moco开源链接:https://github.com/dreamhead/moco

免责声明:文章转载自《Mockserver之Moco框架搭建使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇redux项目实战应用笔录thinkphp 后台的搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue在ASP.NET MVC中的进行前后端的交互

Vue在ASP.NET MVC中的进行前后端的交互 Preface: 由于最近在研究前端相关的技术,作为前端非常优秀的框架Vue,个人在学习的过程中遇到一些问题,网上相关资料有限,所以在这这里总结一下个人使用Vue的一点经验,以便后来者借鉴! 官方文档:Vue.js 使用Vue在ASP.NET MVC中进行前后端交互在阅读下面的文章之前你需要先了解一下V...

Requests库详解

urllib库作为基本库,requests库也是在urllib库基础上发展的 但是urllib在使用上不如requests便利,比如上篇文章在写urllib库的时候,比如代理设置,处理cookie时,没有写,因为感觉比较繁琐,另外在发送post请求的时候,也是比较繁琐。 一言而代之,requests库是python实现的简单易用的HTTP库 在以后做爬虫的...

iOS开发网络数据之AFNetworking使用

http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库。最新版本支持session,xctool单元测试。网络获取数据一直是手机软件的重中之重,如果处理的不好,会造成很差的用户体验。随着ASIHTTPRequest的停止更新,更换网络库是必然的事情,AFNetworking...

在servlet连接mysql下的最简单增删查改

添加 package com.jquery.register; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStateme...

axios 封装及取消请求

axios通用function封装 start http.js 引入了移动端 vant 框架 注:接口地址,加密秘钥,签名方式 根据实际情况而定适当修改 import axios from 'axios'; import md5 from 'md5'; import Vue from 'vue'; import { Toast,Dialog } fro...

Response.AddHeader(,)

Response.AddHeader "P3P”,"CP=CAO PSA OUR” Response.AddHeader "P3P”,"CP=CAO PSA OUR” java code : response.setHeader("P3P", "CP=CAO PSA OUR"); 一段解决IFRAME中SESSION无法保留的代码. 这个是属于HTML...