mock-server/mockserver-monorepo
MockServer is an HTTP(S) mock server and proxy for testing that lets you mock APIs, inspect and modify live traffic, and inject failures. It supports HTTP/1.1, HTTP/2, gRPC, WebSockets, TCP and more on a single port, with additional support for HTTP/3, message brokers, and AI/LLM APIs.
MockServer – 多功能模拟、代理和混沌工程服务器
是什么 – MockServer 是一个自包含的 HTTP(S) 服务器,也可作为代理使用。它允许您 定义预期(规则)以处理传入请求,并返回您需要的任何响应,而无需运行真实的下游服务。它还能记录真实流量,实时编辑,并故意注入故障(延迟、断开连接、错误代码),以测试应用程序的韧性。
对 AI/ML 项目的重要性 – 现代 AI 服务(LLM 聊天完成 API、向量存储后端、数据流水线端点等)通常通过 HTTP/gRPC 访问。在开发过程中,您通常需要一个稳定、可控的替代服务,特别是当:
- 真实服务受速率限制、成本高或尚未部署。
- 您想测试错误处理、超时或格式错误的响应。
- 您需要重放记录的请求/响应流程以实现可复现的 CI 测试。
- 您正在构建与 OpenAI、Anthropic、Gemini、Bedrock、Azure OpenAI、Ollama 或自定义 MCP 基础的编码助手交互的 AI 应用程序 – MockServer 可以模拟这些端点,包括流式响应。
核心功能(如 README 所述)
| 功能 | 可实现的操作 |
|---|---|
| 多协议支持 | 支持 HTTP/1.1、HTTPS、HTTP/2、实验性 HTTP/3(QUIC)、gRPC、gRPC-Web、WebSockets、原始 TCP、JSON-RPC,甚至 Kafka 和 MQTT 等消息代理协议 – 所有协议均通过连接的前几个字节自动检测。 |
| 模拟 | 基于方法、路径、查询、头、Cookie 和正文(JSON、XML、JSONPath、XPath、正则表达式、OpenAPI)定义预期。可返回静态正文、模板化响应(Velocity、Mustache、JavaScript),或调用自定义回调/Webhook。 |
| 代理与记录 | 转发真实流量,捕获请求/响应,检查 TLS 加密流量,并在交互式断点处暂停以编辑或中止请求 – 本质上是网络流量的调试器。 |
| 混沌工程 | 注入延迟、慢速或断开连接、错误状态码,以观察系统在故障条件下的行为。 |
| LLM / AI 模拟 | 内置对热门聊天完成 API(OpenAI、Anthropic、Gemini、Bedrock、Azure OpenAI、Ollama)的支持,包括流式模式,以及用于 AI 编码助手集成的 MCP 服务器。 |
| 验证 | 测试运行后,可断言特定请求是否被接收、接收顺序及次数。 |
| 实时仪表板 | 在 /mockserver/dashboard 提供实时 UI,显示预期、接收的请求和日志。 |
| 客户端库 | 官方支持 Java、JavaScript/Node、Python、Ruby、Go、PHP、.NET 和 Rust 客户端,以及 JUnit、Spring 和 Testcontainers 集成。 |
| 部署选项 | 可作为 Docker 容器运行,通过 Homebrew(mockserver CLI)安装,作为普通 JAR/WAR 运行,使用官方 Helm 图表在 Kubernetes 上部署,或直接在单元测试中嵌入基于 Netty 的服务器。 |
典型工作流程(60 秒快速入门)
- 启动 服务器(
docker run -d -p 1080:1080 mockserver/mockserver)。 - 创建预期 通过向控制平面端点
/mockserver/expectation发送简单的curlPOST 请求 – 例如,将GET /hello映射为返回“Hello World”的200响应。 - 调用 模拟的端点(
curl http://localhost:1080/hello)并接收配置的响应。
所有这些操作均可脚本化,由 CI 流水线驱动,或通过 Postman、Bruno 或社区构建的 React 管理 UI 等工具管理。
在 AI 开发流水线中的使用方式
- 单元/集成测试 用于调用 OpenAI 的
/v1/chat/completions的代码 – 用 MockServer 预期替换真实服务,返回确定性 JSON 负载或流式块序列。 - 性能/韧性测试 – 对每个 LLM 请求注入 5 秒延迟,观察前端如何处理慢响应。
- 录制与回放 – 从生产 LLM 网关捕获真实流量,然后在本地回放以进行调试。
- 契约验证 – 从您自己的 AI 微服务的 OpenAPI 规范自动生成预期,并验证实现是否符合规范。
安装与生态系统
- Docker –
docker run -d --rm -p 1080:1080 mockserver/mockserver - Homebrew –
brew install mockserver && mockserver run --port 1080 - Kubernetes – Helm 图表
mockserver/mockserver(OCI 托管)用于集群部署。 - 语言客户端 – Maven/Gradle 资产(
mockserver-netty-no-dependencies、mockserver-client-java等)、NPM 包(mockserver-node、mockserver-client)、PyPI(mockserver-client)、RubyGems、Go 模块、NuGet 和 crates.io。
项目健康状况 – 活跃维护中(最新版本 7.6.0 于 2026 年 6 月发布),CI 通过 Buildkite,开放问题追踪器,讨论论坛,GitHub 上的路线图项目。需要 Java 17+(或 Docker 镜像自带运行时)。
总结 – MockServer 是一个生产级、协议无关的模拟和代理服务器,可轻松模拟、记录和压力测试任何基于 HTTP 的 API,包括快速增长的 LLM 聊天完成服务家族。它是构建、测试或基准测试 AI 增强型应用程序的可靠工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目