日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WireMock 讓你輕松模擬API

我們開發(fā)過程中,前端和后端的開發(fā)大多是同時(shí)進(jìn)行的,而前端開發(fā)需要訪問某個(gè)接口返回?cái)?shù)據(jù)的時(shí),我們可以使用WireMock模擬指定API返回指定測試數(shù)據(jù),這可以極大的方便我們的開發(fā)工作。今天就介紹如何使用WireMock搭建一個(gè)HTTP模擬器,并介紹一些基本案例。

1. 前言

WireMock 是一個(gè)Http 模擬服務(wù),其核心也是一個(gè)web服務(wù),WireMock主要是為特定請(qǐng)求提供固定的返回值。

WireMock可以作為單獨(dú)進(jìn)程啟動(dòng),模擬一個(gè)WEB服務(wù)器,提供一些API訪問,并返回特定的返回值。也可以作為第三方庫在項(xiàng)目中使用。

下面我們先介紹以下WireMock模擬WEB服務(wù)器的使用吧。

2. WireMock搭建

第一步,先下載WireMock的Jar包, 本教程使用下載地址如下 :https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8-standalone/2.33.2/wiremock-jre8-standalone-2.33.2.jar

到指定目錄啟動(dòng)Jar,同時(shí)也可以加一些啟動(dòng)參數(shù)。下面的命令表示用9998端口啟動(dòng)這個(gè)模擬服務(wù)器。

java -jar wiremock-jre8-standalone-2.33.2.jar -port 9998

啟動(dòng)界面如下:

3. WireMock使用

WireMock啟動(dòng)時(shí)候,文件夾里面會(huì)有 _files 和 mappings 兩個(gè)文件夾, _files文件夾中可以放一些返回?cái)?shù)據(jù)文件。mappings文件夾中存放映射關(guān)系,使用json格式的文件。

如下圖,新建json文件,啟動(dòng)WireMock時(shí)回加載這些文件,更新之后只需要重啟WireMock即可。

3.1 簡單API映射

json文件如下:

{
"mappings": [
{
"request": {
"method": "GET",
"url": "/api/hello"
},
"response": {
"body": "Hello world!",
"headers": {
"Content-Type": "text/plain"
},
"status": 200
}
}
]
}

啟動(dòng)后正常訪問:

如果配置的地址訪問不到也會(huì)返回錯(cuò)誤,如下:

3.2 返回response中添加header

{
"request": {
"method": "GET",
"url": "/whatever"
},
"response": {
"status": 200,
"headers": {
"Content-Type": "text/plain",
"Set-Cookie": ["session_id=91837492837", "split_test_group=B"],
"Cache-Control": "no-cache"
}
}
}

3.3 返回?cái)?shù)組

"response": {
"status": 200,
"jsonBody": {
"arbitrary_json": [1, 2, 3]
}
}

3.4 返回指定文件數(shù)據(jù) 寫在_file文件夾里面

{
"request": {
"method": "GET",
"url": "/bodyfile"
},
"response": {
"status": 200,
"bodyFileName": "/myfile.xml"
}
}

_file文件夾下面新建的文件:

訪問接口則可以直接返回文件中的數(shù)據(jù):

3.5 URL 映射

WireMock也支持映射正則表達(dá)式:

{
"request": {
"urlPattern": "/your/([a-z]*)\\?and=query"
...
},
...
}

3.6 指定請(qǐng)求頭

{
"request": {
...
"headers": {
"Content-Type": {
"equalTo": "application/json",
"caseInsensitive": true
}
}
...
},
...
}

3.7 可變狀態(tài)請(qǐng)求

requiredScenarioState/newScenarioState 可以記錄當(dāng)前API映射所處的狀態(tài)以及新的狀態(tài),可以通過改變其狀態(tài),從而可以使同一個(gè)API返回不同的結(jié)果, 如下面的請(qǐng)求則可以改變狀態(tài),返回不同的結(jié)果.

{
"mappings": [
{
"scenarioName": "To do list",
"requiredScenarioState": "Started",
"request": {
"method": "GET",
"url": "/todo/items"
},
"response": {
"status": 200,
"body": "Buy milk"
}
},
{
"scenarioName": "To do list",
"requiredScenarioState": "Started",
"newScenarioState": "Cancel newspaper item added",
"request": {
"method": "POST",
"url": "/todo/items",
"bodyPatterns": [
{
"contains": "Cancel newspaper subscription"
}
]
},
"response": {
"status": 201
}
},
{
"scenarioName": "To do list",
"requiredScenarioState": "Cancel newspaper item added",
"request": {
"method": "GET",
"url": "/todo/items"
},
"response": {
"status": 200,
"body": "Buy milkCancel newspaper subscription"
}
}
]
}

第一次訪問時(shí),Started狀態(tài):

訪問第二個(gè)接口,改變其狀態(tài)如下

再次訪問API,返回新的數(shù)據(jù)

3.8 API 故障模擬

設(shè)置延時(shí)返回,如下可以設(shè)置定時(shí)延遲2秒。

{
"request": {
"method": "GET",
"url": "/delayed"
},
"response": {
"status": 200,
"fixedDelayMilliseconds": 2000
}
}

如下是延遲2秒的返回結(jié)果。

同時(shí)也可以設(shè)置隨機(jī)的延遲時(shí)間:

{
"request": {
"method": "GET",
"url": "/random/delayed"
},
"response": {
"status": 200,
"delayDistribution": {
"type": "lognormal",
"median": 50,
"sigma": 0.4
}
}
}

總結(jié)

WireMock可以快速搭建Web服務(wù),可以模擬開發(fā)測試需要的各種請(qǐng)求,使用十分方便。對(duì)于維護(hù)測試環(huán)境穩(wěn)定以及提高開發(fā)效率方面都有不錯(cuò)的效果。


當(dāng)前文章:WireMock 讓你輕松模擬API
網(wǎng)站路徑:http://www.dlmjj.cn/article/dpssijh.html