API Mock

为了让开发者更方便地开发小程序,开发者工具提供了 API Mock 的能力,可以模拟部分 API 的调用结果。

运行环境

  • 下载并安装 1.02.2003062 或以上版本的开发者工具,下载地址

使用方法

基础用法

Mock 的入口在工具调试面板顶部的 Tab,点 + 新建规则

入口

规则示例

基础用法

运行如下代码:

  1. wx.request({
  2. url: 'https://example.com/ajax?dataType=member',
  3. dataType: 'json',
  4. success(res) {
  5. console.log(res)
  6. }
  7. })

将命中上面的规则,得到以下数据:

示例

规则优先级

当对一个 API 配置了多个规则时,靠前的规则,会优先匹配,当一条规则被命中,后面的规则将不会再被执行。

可以通过拖拽的形式,改变规则的优先顺序,得到想要的 Mock 结果。

多层级参数匹配

如果匹配的参数类型不是一个基本类型,而是一个 Object 参数下的某个属性,这时需要用到多层级匹配。

例如:当wx.request调用的data参数带有一个名为mock的属性值为true的时候,才通过 Mock 规则返回结果,参数匹配规则应填写:

多层级参数匹配

上述例子中的wx.request调用,需要修改成:

  1. wx.request({
  2. url: 'https://example.com/ajax?dataType=member',
  3. data: { // \
  4. mock: true // - 添加这三行
  5. }, // /
  6. dataType: 'json',
  7. success(res) {
  8. console.log(res)
  9. }
  10. })

才能命中此规则。

使用数据模板

当需要模拟的数据比较复杂的时候,可以使用数据模板快速生成符合你要求的数据。

数据模板的语法采用自开源库 Mock.js,详细的语法可以在该项目文档中查看。

例如:上面的例子,想要返回的 list 包含 10 项不同的数据,可以在“数据生成”中选择“数据模板”,填入如下模板:

  1. {
  2. "data": {
  3. "list|10": [
  4. {"id|+1": 1, "name": "@FIRST"}
  5. ]
  6. },
  7. "statusCode": 200,
  8. "header": {
  9. "content-type": "application/json; charset=utf-8"
  10. }
  11. }

模板编辑器下方会根据模板实时生成数据预览,方便确认模板的正确性。

数据模板

重新调用上面的代码,将返回:

数据模板返回

规则导入导出

当需要与项目中其他成员共享规则时,可以在 Mock 中导出规则配置,再把配置文件发送给其他成员导入即可,操作入口如图:

导入导出

注意事项

  • 规则匹配中的正则表达式均不区分大小写;
  • wx.request中暂时无法使用dataType参数进行匹配;
  • 在匹配规则中的参数名中,“.”属于特殊字符,如果要匹配的参数名中包含“.”将无法匹配成功,例如

    1. {
    2. "propName": {
    3. "key": "value",
    4. // 通过 propName.namespace1.key 无法匹配到此参数,应尽量避免这种情况。
    5. "namespace1.key": "value1"
    6. }
    7. }
  • 蓝牙模块相关的 API,实际调用中需要先调用wx.openBluetoothAdapter进行初始化,但是在 Mock 的规则命中后将没有这些限制,需要注意

    • 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