# API Mock
為了讓開(kāi)發(fā)者更方便地開(kāi)發(fā)小程序,開(kāi)發(fā)者工具提供了 API Mock 的能力,可以模擬部分 API 的調(diào)用結(jié)果。
# 運(yùn)行環(huán)境
- 下載并安裝
1.02.2003062或以上版本的開(kāi)發(fā)者工具,下載地址。
# 使用方法
# 基礎(chǔ)用法
Mock 的入口在工具調(diào)試面板頂部的 Tab,點(diǎn) + 新建規(guī)則

規(guī)則示例

運(yùn)行如下代碼:
wx.request({
url: 'https://example.com/ajax?dataType=member',
dataType: 'json',
success(res) {
console.log(res)
}
})
將命中上面的規(guī)則,得到以下數(shù)據(jù):

# 規(guī)則優(yōu)先級(jí)
當(dāng)對(duì)一個(gè) API 配置了多個(gè)規(guī)則時(shí),靠前的規(guī)則,會(huì)優(yōu)先匹配,當(dāng)一條規(guī)則被命中,后面的規(guī)則將不會(huì)再被執(zhí)行。
可以通過(guò)拖拽的形式,改變規(guī)則的優(yōu)先順序,得到想要的 Mock 結(jié)果。
# 多層級(jí)參數(shù)匹配
如果匹配的參數(shù)類(lèi)型不是一個(gè)基本類(lèi)型,而是一個(gè) Object 參數(shù)下的某個(gè)屬性,這時(shí)需要用到多層級(jí)匹配。
例如:當(dāng)wx.request調(diào)用的data參數(shù)帶有一個(gè)名為mock的屬性值為true的時(shí)候,才通過(guò) Mock 規(guī)則返回結(jié)果,參數(shù)匹配規(guī)則應(yīng)填寫(xiě):

上述例子中的wx.request調(diào)用,需要修改成:
wx.request({
url: 'https://example.com/ajax?dataType=member',
data: { // \
mock: true // - 添加這三行
}, // /
dataType: 'json',
success(res) {
console.log(res)
}
})
才能命中此規(guī)則。
# 使用數(shù)據(jù)模板
當(dāng)需要模擬的數(shù)據(jù)比較復(fù)雜的時(shí)候,可以使用數(shù)據(jù)模板快速生成符合你要求的數(shù)據(jù)。
數(shù)據(jù)模板的語(yǔ)法采用自開(kāi)源庫(kù) Mock.js,詳細(xì)的語(yǔ)法可以在該項(xiàng)目文檔中查看。
例如:上面的例子,想要返回的 list 包含 10 項(xiàng)不同的數(shù)據(jù),可以在“數(shù)據(jù)生成”中選擇“數(shù)據(jù)模板”,填入如下模板:
{
"data": {
"list|10": [
{"id|+1": 1, "name": "@FIRST"}
]
},
"statusCode": 200,
"header": {
"content-type": "application/json; charset=utf-8"
}
}
模板編輯器下方會(huì)根據(jù)模板實(shí)時(shí)生成數(shù)據(jù)預(yù)覽,方便確認(rèn)模板的正確性。

重新調(diào)用上面的代碼,將返回:

# 規(guī)則導(dǎo)入導(dǎo)出
當(dāng)需要與項(xiàng)目中其他成員共享規(guī)則時(shí),可以在 Mock 中導(dǎo)出規(guī)則配置,再把配置文件發(fā)送給其他成員導(dǎo)入即可,操作入口如圖:
# 注意事項(xiàng)
- 規(guī)則匹配中的正則表達(dá)式均不區(qū)分大小寫(xiě);
wx.request中暫時(shí)無(wú)法使用dataType參數(shù)進(jìn)行匹配;- 在匹配規(guī)則中的參數(shù)名中,“.”屬于特殊字符,如果要匹配的參數(shù)名中包含“.”將無(wú)法匹配成功,例如
{ "propName": { "key": "value", // 通過(guò) propName.namespace1.key 無(wú)法匹配到此參數(shù),應(yīng)盡量避免這種情況。 "namespace1.key": "value1" } } - 藍(lán)牙模塊相關(guān)的 API,實(shí)際調(diào)用中需要先調(diào)用
wx.openBluetoothAdapter進(jìn)行初始化,但是在 Mock 的規(guī)則命中后將沒(méi)有這些限制,需要注意- getBLEDeviceServices
- getBLEDeviceCharacteristics
- createBLEConnection
- closeBLEConnection
- writeBLECharacteristicValue
- startBluetoothDevicesDiscovery
- stopBluetoothDevicesDiscovery
- getConnectedBluetoothDevices
- getBluetoothDevices
- getBluetoothAdapterState
- closeBluetoothAdapter
- 目前支持Mock 的 API 列表:
- request
- downloadFile
- getLocation
- checkSession
- requestPayment
- startSoterAuthentication
- checkIsSupportSoterAuthentication
- checkIsSoterEnrolledInDevice
- startBeaconDiscovery
- stopBeaconDiscovery
- getBeacons
- startWifi
- stopWifi
- getConnectedWifi
- connectWifi
- getBLEDeviceServices
- getBLEDeviceCharacteristics
- createBLEConnection
- closeBLEConnection
- writeBLECharacteristicValue
- startBluetoothDevicesDiscovery
- stopBluetoothDevicesDiscovery
- openBluetoothAdapter
- getConnectedBluetoothDevices
- getBluetoothDevices
- getBluetoothAdapterState
- closeBluetoothAdapter
- stopHCE
- startHCE
- sendHCEMessage
- getHCEState
- setBackgroundFetchToken
- getBackgroundFetchToken
- getBackgroundFetchData