Moco in action

Moco 是一個輕量級的打樁框架,這個是構建在http協議上的,並且支持 Web service , REST等。對於前端來說,是實現前後端分離的關鍵,我們可以通過Moco配置返回數據模擬服務器返回的真實數據。我接下來將寫兩篇文章介紹怎麼測試angular的controller和service,將用到Moco,這篇文章就作爲鋪墊吧。

Moco快速入門:

首先,從 repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/moco-runner-0.10.0-standalone.jar ,這個jar可以單獨運行。

接下來,在某個目錄下建立一個moco.conf.js文件,輸入以下內容:

[
  {    
      "response" : {     
          "text" : "Hello, Moco"
      }
  }
]

有了這兩個文件,就可以運行Moco了(當然你的電腦上已經配置Java環境),啓動命令行,切換到jar包的目錄下,運行如下命令:

java -jar moco-runner-0.10.0-standalone.jar http -p 12306 -c moco.conf.json

效果如下:

wKioL1UBNZaSe53YAADBTP3hMA0563.jpg

在瀏覽器輸入 http://localhost:12306,就能看到如下結果:

wKiom1UBNHfCHyfuAACCUSOZlb0377.jpg


全局配置


我們可以將配置項配置到一個文件中,也可以分散到多個文件中,我們一個一個解釋,先看一下配置到一個文件中的情況:

將moco.conf.json修改爲如下:

[
   {
        "request" : {
            "uri" : "/foo"
        },
        "response" : {
            "text" : "This is test refer to /foo"
        }
    },
 {
        "request" : {
            "uri" : "/bar"
        },
        "response" : {
            "text" : "This is bar refer to /bar"
        }
    }
]

你可以重新在瀏覽器中輸入 http://localhost:12306/foo 和 http://localhost:12306/bar,可以看下各自的結果。配置文件中每個對象對應一個請求的url和response。這個很容易理解。

下面我們看下將配置文件分散到多個文件中的情況

新建文件bar.json,並輸入以下內容:

[
 {
        "request" : {
            "uri" : "/bar"
        },
        "response" : {
            "text" : "This is bar refer to /bar"
        }
    }
]

新建文件bar.json,並輸入以下內容:

[
  {
        "request" : {
            "uri" : "/foo"
        },
        "response" : {
            "text" : "This is test refer to /foo"
        }
    }
]

新建setting.json,並輸入以下內容:

[
    {
        "include" : "foo.json"
    },
    {
        "include" : "bar.json"
    }
]

這種情況下運行的命令行做些稍微的改變,完整的命令如下:

java -jar moco-runner-0.10.0-standalone.jar start -p 12306 -g setting.json

繼續在瀏覽器中輸入 http://localhost:12306/foo 和 http://localhost:12306/bar,你會發現能得到和上面相同的結果。是不是挺爽,有了這個功能就可以假數據分散到多個json文件中了,一種業務邏輯一個json文件。

還可以給配置文件指定映射,先看一個簡單的例子,我們將setting.json文件修改一下,修改內容如下:

[
    {
         "context" : "/foo",
        "include" : "foo.json"
    },
    {
         "context" : "/bar",
        "include" : "bar.json"
    }
]


在瀏覽器中輸入http://localhost:12306/foo/foo 和 http://localhost:12306/bar/bar,會看到同樣的結果。

返回文件的配置暫時省略,我已經寫好一個例子,有需要可以聯繫我。


全局的Request 和Response 


在REST請求中,有時候需要處理header,這時候全局的request和response就幫到你。

request

[
  {
    "request" : {
      "headers" : {
        "foo" : "bar"
      }
    },
    "include": "blah.json"
  }
]

這種配置,只有request中有foo時才接收數據。

response 

[
    {
        "response" : {
            "headers" : {
                "foo" : "bar"
            }
        },
        "include": "blah.json"
    }
]

這種配置,當你向服務器發送任一個請求,都將返回包含foo的header。

最後補充一點其他的命令行:

啓動https服務:

java -jar moco-runner-<version>-standalone.jar https -p 12306 -c foo.json --https /path/to/cert.jks --cert mocohttps --keystore mocohttps

啓動socket服務:

java -jar moco-runner-<version>-standalone.jar socket -p 12306 -c foo.json


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章