SuperAPI AI 工具集

cli-anything-wiremock

测试与质量

查看项目

更新于 10-15 12:25

技能介绍

用途

cli-anything-wiremock 是一个命令行界面工具,用于管理 WireMock HTTP 模拟服务器。它封装了 WireMock 的 Admin REST API(/__admin/),使智能体和开发者能够从终端或智能体工具调用中管理 HTTP 桩映射、检查已处理的请求、控制有状态场景,以及录制真实后端流量。WireMock 通常用于集成测试环境,以可控的模拟响应替代真实 HTTP 后端。

主要能力

该工具按命令组组织功能:

stub — 管理 HTTP 桩映射

  • stub list:列出所有已注册的桩
  • stub get <id>:按 UUID 获取特定桩的详情
  • stub create <json>:从 JSON 字符串创建桩
  • stub quick M URL S:快速创建桩,参数为 METHOD URL STATUS_CODE
  • stub delete <id>:按 UUID 删除桩
  • stub reset:将所有桩重置为磁盘上的默认值
  • stub save:将内存中的桩持久化到磁盘
  • stub import <file>:从 JSON 文件导入桩

request — 检查已处理的请求

  • request list:列出最近的已处理请求
  • request find <pattern>:查找匹配 JSON 模式的请求
  • request count <pattern>:统计匹配 JSON 模式的请求数量
  • request unmatched:列出未匹配任何桩的请求(404)
  • request reset:清空请求日志

scenario — 有状态场景管理

  • scenario list:列出所有场景及当前状态
  • scenario set N S:将场景 NAME 设置为 STATE
  • scenario reset:将所有场景重置为初始状态

record — 录制真实后端流量

  • record start <url>:开始代理并录制到 TARGET_URL
  • record stop:停止录制,返回捕获的桩
  • record status:检查当前是否正在录制
  • record snapshot:将内存中的请求快照为桩

settings — 全局服务器设置

  • settings get:获取当前全局 WireMock 设置
  • settings version:显示 WireMock 服务器版本

顶层命令

  • status:检查 WireMock 是否正在运行
  • reset:完全重置:桩 + 请求 + 场景
  • shutdown:优雅关闭 WireMock 服务器

使用方式

关键示例:

检查连通性:

cli-anything-wiremock status

使用快速表单创建桩:

cli-anything-wiremock stub quick GET /api/users 200 --body '[{"id":1}]'

使用完整 JSON 创建桩:

cli-anything-wiremock stub create '{
  "request": {"method": "POST", "url": "/api/orders"},
  "response": {"status": 201, "body": "{\"id\":99}"}
}'

验证 POST 请求恰好被调用一次:

cli-anything-wiremock --json request count '{"method":"POST","url":"/api/orders"}'
# → {"count": 1}

场景:推进状态:

cli-anything-wiremock scenario set "cart-flow" "item-added"

录制真实后端:

cli-anything-wiremock record start https://api.example.com
# ... 发起请求 ...
cli-anything-wiremock record stop

智能体使用指引

在智能体场景中始终使用 --json。在脚本或智能体工具调用中,所有调用都应使用 --json。JSON 输出因命令类型而异(这些是不同的响应类型,并非包装所有响应的统一信封):

数据命令直接返回原始 WireMock API JSON:

cli-anything-wiremock --json stub quick GET /api/hello 200 --body '{"hello":"world"}'
# → {"id": "abc-123", "request": {...}, "response": {...}, ...}

cli-anything-wiremock --json stub list
# → {"mappings": [...], "total": N}

空操作命令(delete、reset、save)返回:

# → {"status": "ok"}

错误返回:

# → {"status": "error", "message": "Connection refused"}

通过环境变量连接

在调用任何命令前,通过环境变量设置连接参数:

export WIREMOCK_HOST=localhost
export WIREMOCK_PORT=8080

测试验证的工作流模式

  1. 在运行被测系统前设置桩:
cli-anything-wiremock --json stub quick POST /api/payment 200 --body '{"success":true}'
  1. 运行被测系统。
  2. 验证交互:
cli-anything-wiremock --json request count '{"method":"POST","url":"/api/payment"}'
  1. 清理:
cli-anything-wiremock reset

错误处理

所有错误均返回非零退出码。在 --json 模式下,错误返回 {"status": "error", "message": "..."}。成功时返回原始 WireMock API 响应。

适用场景

  • 集成测试环境中替代真实 HTTP 后端,提供可控的模拟响应
  • 智能体或自动化脚本中管理 WireMock 桩、验证请求交互
  • 录制真实后端流量并生成桩,用于后续测试
  • 有状态场景测试,模拟多步骤交互流程

限制

资料中未提供关于安装方式、依赖要求、支持平台、收费模式或性能限制的具体信息。