Mock Scripts 是一項 進階功能,需要 JavaScript 知識。對於大多數使用案例,Smart Mock 和 Mock Expectations 就足夠了。如果您剛開始接觸 API Mocking,可以跳過這篇文章。
雖然 Smart Mock 和 Mock Expectations 可以處理大多數場景,但有時您需要保持請求和回應資料之間 邏輯關係 的 Mock 回應。Mock Scripts 允許您編寫 JavaScript 程式碼來根據請求參數動態自訂 Mock 回應。在這篇文章中,我們將學習如何將 Mock Scripts 用於 Pet Store API,以建立保持資料一致性的智慧 Mock 回應。
1. 什麼是 Mock Scripts?#
Mock Scripts 是在收到 Mock 請求時執行的 JavaScript 程式碼片段。它們允許您:存取請求資料:讀取路徑參數、查詢參數、標頭和 Body
修改回應資料:在返回之前更改 Smart Mock 生成的回應
保持關係:確保回應資料與請求參數匹配(例如:回應 ID 與請求 ID 匹配)
何時使用 Mock Scripts#
請求-回應一致性:回應 ID 應與請求 URL 中的 ID 匹配
邏輯關係:回應欄位取決於請求參數(例如:年齡影響收養費)
注意:Mock Scripts 僅適用於 Smart Mock。它們不適用於 Mock Expectations 或回應範例。
2. Mock Scripts 如何運作#
1.
Smart Mock 生成 初始 Mock 回應,基於您的 API 規範
2.
Mock Script 執行 並可以存取請求 ($$.mockRequest) 和生成的回應 ($$.mockResponse)
可用物件#
$$.mockRequest:存取請求資料(參數、標頭、Body)
$$.mockResponse:存取和修改 Mock 回應
3. 範例 1:在回應中匹配請求 ID#
讓我們從一個簡單的範例開始:確保回應中的寵物 ID 與請求 URL 中的 ID 匹配。當您請求 GET /pets/pet_123 時,回應應該包含 "id": "pet_123"——而不是 Smart Mock 生成的隨機 ID。步驟 1:打開 Mock 分頁#
1.
在您的 Pet Store API 中打開 GET /pets/{id} 端點
步驟 2:啟用並編寫腳本#
步驟 3:測試 Mock#
1.
使用帶有特定寵物 ID 的 Mock URL:GET /pets/pet_1Nv0FGQ9RKHgCVdK
2.
回應現在將包含 "id": "pet_1Nv0FGQ9RKHgCVdK" 而不是隨機 ID
{
"id": "pet_abc123xyz",
"name": "Luna",
"species": "DOG",
...
}
{
"id": "pet_1Nv0FGQ9RKHgCVdK",
"name": "Luna",
"species": "DOG",
"links": {
"self": "https://api.petstoreapi.com/v1/pets/pet_1Nv0FGQ9RKHgCVdK"
},
...
}
4. 範例 2:動態分頁#
讓我們建立一個更複雜的範例:確保分頁中繼資料與請求參數匹配。對於 GET /pets?page=2&limit=10,回應應該包含:pagination.page = 2(來自請求)
pagination.limit = 10(來自請求)
pagination.totalPages 基於總項目數計算
當您請求 GET /pets?page=2&limit=10 時,回應將有:{
"data": [...],
"pagination": {
"page": 2,
"limit": 10,
"totalItems": 45,
"totalPages": 5
},
"links": {
"self": "https://api.petstoreapi.com/v1/pets?page=2&limit=10",
"prev": "https://api.petstoreapi.com/v1/pets?page=1&limit=10",
"next": "https://api.petstoreapi.com/v1/pets?page=3&limit=10",
"last": "https://api.petstoreapi.com/v1/pets?page=5&limit=10"
}
}
5. 範例 3:基於請求的條件邏輯#
您也可以使用 Mock Scripts 根據請求條件返回不同的回應。對於 GET /pets/{id},如果寵物 ID 以 pet_test_ 開頭,則返回帶有可預測資料的特殊測試寵物。請求:GET /pets/pet_test_123 → 返回可預測的測試資料
請求:GET /pets/pet_1Nv0FGQ9RKHgCVdK → 返回帶有匹配 ID 的 Smart Mock 資料
6. 常見使用案例#
存取請求資料#
修改回應資料#
7. 關鍵重點#
Mock Scripts 允許您使用 JavaScript 自訂 Smart Mock 回應
僅適用於 Smart Mock:Mock Scripts 不適用於 Mock Expectations 或回應範例
存取請求資料:使用 $$.mockRequest 讀取參數、標頭和 Body
修改回應資料:使用 $$.mockResponse 在返回之前更新 Mock 回應
強大的工具:實現保持邏輯關係的逼真 Mock 回應
Mock Scripts 為您提供了建立保持資料一致性和邏輯關係的智慧 Mock 回應的靈活性。結合 Smart Mock、Mock Expectations 和 Cloud Mock,您擁有了 Apidog 中用於 API Mocking 的完整工具包。準備好繼續了嗎?讓我們在 章節總結 中回顧我們學到的內容。