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/foohttp://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/foohttp://localhost:12306/bar,你會發現能得到和上面相同的結果。是不是挺爽,有了這個功能就可以假數據分散到多個json文件中了,一種業務邏輯一個json文件。

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

[
{
“context” : “/foo”,
“include” : “foo.json”
},
{
“context” : “/bar”,
“include” : “bar.json”
}
]
在瀏覽器中輸入http://localhost:12306/foo/foohttp://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

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