API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Mocking APIs
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Mocking APIs

Mock 預期結果

雖然 Smart Mock 根據您的 API 規範自動生成資料,但有時您需要更多控制。Mock Expectations(Mock 期望)允許您定義帶有特定條件的自訂 Mock 回應,讓您完全控制 Mock 伺服器返回的內容。
在這篇文章中,我們將學習如何為 Pet Store API 建立 Mock Expectations,包括固定回應、條件回應和動態回應。

1. 什麼是 Mock Expectations?#

Mock Expectations 是您為特定場景定義的自訂 Mock 回應。與 Smart Mock(自動生成資料)不同,Mock Expectations 讓您:
返回 固定資料,這些資料永不改變
基於請求參數返回 不同回應
使用範本和表達式返回 動態資料
Mock Expectations 具有 最高優先級——如果請求符合期望的條件,則會返回該期望的回應,而不是 Smart Mock。

2. 何時使用 Mock Expectations#

在以下情況下使用 Mock Expectations:
特定測試場景:測試您的應用程式如何處理特定回應(成功、錯誤、邊緣情況)
條件回應:根據請求參數返回不同資料(例如:針對不同 ID 的不同回應)
固定回應:始終返回相同資料以保持一致性
錯誤模擬:模擬錯誤回應(404、500 等)進行測試

3. 建立一個固定的 Mock Expectation#

讓我們從最簡單的情況開始:建立一個始終返回相同資料的 Mock Expectation。

範例:始終返回特定寵物#

假設您希望 GET /pets/{id} 端點在被呼叫時始終返回特定的寵物:

步驟 1:打開 Mock 分頁#

1.
在您的 Pet Store API 中打開 GET /pets/{id} 端點
2.
切換到 "Mock" 分頁
image.png

步驟 2:建立新的 Expectation#

1.
點擊 "New expectation"
2.
為 Expectation 輸入名稱(例如:"Fixed Pet Response")
3.
將 Conditions(條件)部分留空(無條件 = 始終匹配)
4.
在 Response(回應)部分,輸入您想要返回的 JSON 資料:
{
  "id": "pet_123",
  "name": "Luna",
  "species": "DOG",
  "breed": "Golden Retriever",
  "ageMonths": 24,
  "status": "AVAILABLE",
  "adoptionFee": 150.00
}
5.
點擊 "Save"(儲存)
image.png

步驟 3:使用 Mock URL#

1.
複製為此 Expectation 提供的 Mock URL
2.
在您的瀏覽器或應用程式中使用它
3.
Mock 伺服器將始終返回您指定的確切資料

4. 建立條件式 Mock Expectations#

Mock Expectations 的真正威力在於 條件回應——根據請求參數返回不同資料。

範例:針對不同寵物 ID 的不同回應#

讓我們建立 Expectations,根據 id 路徑參數返回不同的寵物:

步驟 1:為 ID "pet_123" 建立 Expectation#

1.
點擊 "New expectation"
2.
輸入名稱:"Pet 123 - Luna"
3.
在 Conditions 中,新增一個條件:
Parameter Type:Path Parameter
Parameter Name:id
Value:pet_123
4.
在 Response 中,輸入:
{
  "id": "pet_123",
  "name": "Luna",
  "species": "DOG",
  "breed": "Golden Retriever",
  "status": "AVAILABLE"
}
5.
點擊 "Save"

步驟 2:為 ID "pet_456" 建立 Expectation#

1.
再次點擊 "New expectation"
2.
輸入名稱:"Pet 456 - Max"
3.
在 Conditions 中,新增:
Parameter Type:Path Parameter
Parameter Name:id
Value:pet_456
4.
在 Response 中,輸入:
{
  "id": "pet_456",
  "name": "Max",
  "species": "CAT",
  "breed": "Persian",
  "status": "PENDING"
}
5.
點擊 "Save"

步驟 3:測試條件回應#

1.
使用帶有 id=pet_123 的 Mock URL → 返回 Luna 的資料
2.
使用帶有 id=pet_456 的 Mock URL → 返回 Max 的資料
3.
使用帶有任何其他 ID 的 Mock URL → 回退到 Smart Mock(如果沒有條件匹配)
image.png

匹配如何運作#

Mock Expectations 從 上到下 檢查
使用 第一個匹配的 Expectation
如果 沒有條件匹配,Apidog 回退到 Smart Mock 或回應範例

5. 支援的條件類型#

您可以基於以下內容建立條件:
查詢參數 (Query parameters):?status=AVAILABLE
路徑參數 (Path parameters):/pets/{id} 其中 id=pet_123
標頭參數 (Header parameters):自訂標頭如 X-User-Id
Cookie 參數:Cookie 值
Body 參數:JSON Body 欄位(僅限 JSON)
範例:建立一個 Expectation,根據查詢參數返回不同回應:
條件:查詢參數 status 等於 "AVAILABLE"
回應:只返回可用的寵物

6. 建立動態 Mock Expectations#

您還可以使用 Faker.js 和 Nunjucks 範本建立生成動態資料的 Expectations。

範例:生成寵物列表#

讓我們建立一個 Expectation 來生成動態寵物列表:
1.
點擊 "New expectation"
2.
輸入名稱:"Dynamic Pet List"
3.
將條件留空(或新增您的條件)
4.
在 Response 中,使用範本:
{
  "pets": [
    {% for i in range(0, 5) %}
    {% if i>0 %},{% endif %}
    {
      "id": "pet_{{i}}",
      "name": "{{$person.firstName}}",
      "species": "{{$helpers.arrayElement(['DOG','CAT'])}}",
      "ageMonths": {{$number.int(min=1,max=120)}}
    }
    {% endfor %}
  ],
  "total": 5
}
這會生成:
一個包含 5 個寵物物件的陣列
每個都有唯一的 ID(pet_0、pet_1 等)
隨機的名字、物種和年齡

範本語法#

{{$...}} → Faker.js 表達式用於隨機資料
{% for ... %} → Nunjucks 迴圈
{% if ... %} → Nunjucks 條件語句

7. 進階功能#

Mock Expectations 支援額外功能:

自訂回應標頭#

新增自訂標頭以模擬驗證、分頁等:
1.
在 Expectation 中,前往 Headers 部分
2.
新增標頭如 X-Total-Count: 100 或 Authorization: Bearer token123
image.png

HTTP 狀態碼#

模擬不同的 HTTP 狀態碼:
1.
在 Expectation 中,點擊 "More"
2.
將 HTTP Status Code 設定為 404、500 等(預設為 200)

回應延遲#

模擬慢速 API 回應:
1.
在 "More" 分頁中
2.
設定 Response Delay(毫秒)
3.
對於測試您的應用程式如何處理慢速回應很有用
image.png

啟用/停用 Expectations#

您可以針對不同環境(本地 Mock、雲端 Mock)開啟/關閉 Expectations,而無需刪除它們。

8. 關鍵重點#

Mock Expectations 給您對 Mock 回應的完全控制權
固定 Expectations 始終返回相同資料
條件 Expectations 根據請求參數返回不同資料
動態 Expectations 使用範本生成可變資料
最高優先級:Mock Expectations 覆蓋 Smart Mock
多重條件:您可以組合查詢、路徑、標頭和 Body 參數
進階功能:自訂標頭、狀態碼和延遲以進行逼真測試

Mock Expectations 提供了建立用於測試和開發的複雜 Mock 場景的靈活性。在下一篇文章中,我們將學習 Cloud Mock——如何在雲端部署 Mock 伺服器以供團隊範圍存取。
繼續閱讀 → Cloud Mock
Modified at 2025-12-29 09:35:19
Previous
Smart Mock
Next
Cloud Mock
Built with