# API Mock

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

# 运行环境

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

# 使用方法

# 基础用法

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

入口

规则示例

基础用法

运行如下代码:

wx.request({
  url: 'https://example.com/ajax?dataType=member',
  dataType: 'json',
  success(res) {
    console.log(res)
  }
})

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

示例

# 规则优先级

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

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

# 多层级参数匹配

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

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

多层级参数匹配

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

wx.request({
  url: 'https://example.com/ajax?dataType=member',
  data: {         // \
    mock: true	  // - 添加这三行
  },              // /
  dataType: 'json',
  success(res) {
    console.log(res)
  }
})

才能命中此规则。

# 使用数据模板

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

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

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

{
  "data": {
    "list|10": [
      {"id|+1": 1, "name": "@FIRST"}
    ]
  },
  "statusCode": 200,
  "header": {
    "content-type": "application/json; charset=utf-8"
  }
}

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

数据模板

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

数据模板返回

# 规则导入导出

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

导入导出

# 注意事项

  • 规则匹配中的正则表达式均不区分大小写;
  • wx.request中暂时无法使用dataType参数进行匹配;
  • 在匹配规则中的参数名中,“.”属于特殊字符,如果要匹配的参数名中包含“.”将无法匹配成功,例如
      {
        "propName": {
          "key": "value",
          // 通过 propName.namespace1.key 无法匹配到此参数,应尽量避免这种情况。
          "namespace1.key": "value1"
        }
      }
    
  • 蓝牙模块相关的 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