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 增強型應用程式的可靠工具。
相關
- 專案
- 專案
- 專案
- 專案
- 專案