Mockserver之Moco框架搭建使用

EdisonYao發表於2020-11-16
  • 客戶要求進行完整的產品展示,人員和時間都有限,來不及開發後端服務。。。
  • 工期比較緊的專案,前端已開發完成,需要除錯,後端介面還未開發完成。。。
  • 公司某個專案依賴於第三方服務,但是第三方服務不方便頻繁呼叫。。。

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

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

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

此時,在瀏覽器中輸入: 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:\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開源連結:https://github.com/dreamhead/moco

相關文章