You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Wiremock Standalone中复用接口生成的warehouse_id值?

Wiremock Standalone 实现接口间状态复用方案

要解决你遇到的问题,核心是利用Wiremock的**场景(Scenarios)**功能结合响应模板,将/api/product/{id}生成的warehouse_id存储下来,供/api/warehouse/接口复用。以下是具体实现步骤:

1. 启动Wiremock时启用响应模板功能

Wiremock的模板和场景功能需要显式启用,启动命令如下:

java -jar wiremock-jre8-standalone-<版本号>.jar --enable-response-templating

2. 修改/api/product/{id}存根:生成并存储warehouse_id

这个存根会在首次请求时生成随机warehouse_id,同时将其存入场景变量,标记场景状态为已生成:

{
  "request": {
    "urlPattern": "/api/product/([0-9]+)",
    "method": "GET"
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "data": {
        "id": "{{request.path.[3]}}",
        "name": "product name",
        "warehouse_id": "{{warehouseId}}"
      }
    },
    "transformers": ["response-template"],
    "scenarioName": "WarehouseIdScenario",
    "requiredScenarioState": "Started",
    "newScenarioState": "WarehouseIdGenerated",
    "setScenarioState": {
      "warehouseId": "{{warehouseId}}"
    },
    "preTemplateScript": "{{#assign \"warehouseId\"}}{{randomInt lower=1 upper=100}}{{/assign}}"
  }
}
  • preTemplateScript:提前生成随机warehouse_id并赋值给临时变量,避免重复生成导致不一致
  • scenarioName:定义场景名称,确保两个接口关联同一个场景
  • setScenarioState:将临时变量的值存入场景全局变量warehouseId

3. 修改/api/warehouse/存根:复用场景中的warehouse_id

这个存根会读取场景中存储的warehouseId,替换第一个仓库的ID:

{
  "request": {
    "urlPattern": "/api/warehouse/",
    "method": "GET"
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "data": [
        {
          "id": "{{scenario.variables.warehouseId}}",
          "address": "John av. 12",
          "capacity": 1000
        },
        {
          "id": "{{randomInt lower=1 upper=100}}",
          "address": "Vernon ave 79",
          "capacity": 500
        }
      ]
    },
    "transformers": ["response-template"],
    "scenarioName": "WarehouseIdScenario",
    "requiredScenarioState": "WarehouseIdGenerated"
  }
}
  • requiredScenarioState:确保只有在/api/product/{id}请求完成(场景状态变为WarehouseIdGenerated)后,这个存根才会生效
  • {{scenario.variables.warehouseId}}:直接读取场景中存储的warehouse_id

4. 重置场景状态(可选)

如果需要重新生成新的warehouse_id,可以通过Wiremock的Admin接口重置场景:

curl -X POST http://localhost:8080/__admin/scenarios/WarehouseIdScenario/reset

或者直接重启Wiremock服务。


内容的提问来源于stack exchange,提问作者lojz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:07:04