Mockserver之Moco框架搭建使用

  • 客戶要求進行完整的產品展示,人員和時間都有限,來不及開發後端服務。。。
  • 工期比較緊的項目,前端已開發完成,需要調試,後端介面還未開發完成。。。
  • 公司某個項目依賴於第三方服務,但是第三方服務不方便頻繁調用。。。

實際的工作當中,從商務到開發再到測試,經常會遇到上述所說的情況,如此的反覆就造成了項目

的進度受限,這被稱為短板效應。此時,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>:配置文件存放路徑

如下圖中所示,表示啟動成功:

此時,在瀏覽器中輸入: //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:\Moco\moco-runner-1.1.0-standalone.jar start -p 8080 -c config.json 

服務啟動後,使用介面測試工具調用該配置中的介面。

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 

 注意:在啟動服務的命令中, -c 是載入單體配置文件, -g 是載入全局配置文件。兩者不可以混淆,否則

配置文件解析會報錯。

 

Moco開源鏈接://github.com/dreamhead/moco