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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM