軟件系統日益複雜的今天,爲了能有效控制住系統的複雜性,分工是勢在必行的選擇,這也契合經濟學之父亞當斯密在其《國富論》中闡述的"社會分工可以大大提高生產效率"。
1. 概述
軟件開發中,分工不僅僅體現在模塊的劃分,前後端的分離,也體現在對於第三方服務的依賴上,畢竟伴隨用戶要求越來越高,我們不可能在一個系統中將所有的功能都從零開始實現一遍,這完全沒有必要且不現實。
受限於工期或其它因素,很多時候尤其是開發測試階段我們對外部的強依賴會讓我們的工作舉步維艱甚至寸步難行。不過好在業界對於這類問題很早就注意到了,本文將要介紹的正是POSTMAN在Mock上的使用。
2. 操作概述
因爲POSTMAN提供了非常多創建Mock Server的方式,這裏筆者就不一一介紹了,官方介紹得更加詳細,甚至配了相應的GIF動態圖(以及對應的拆解步驟說明),筆者將嘗試從一個初學者的角度來陳述整個流程。
首先讓我們一種偏大白話的方式來解釋POSTMAN中創建Mock邏輯(POSTMAN - Mocking with examples):
- 既然我們需要對第三方依賴進行Mock,那麼必然存在一個調用第三方服務的HTTP請求。這就對應了第一步的"Sending a request (R1)"。
- 既然都使用了POSTMAN,我們必然是希望創建的Request能夠被重複性執行。這就對應了第二步的"Saving the request (R1) to a collection (C1)"。
- 完成了對Request的持久化,接下來就進入Mock的創建環節(其實所謂的Mock說直白一點就是對於某個請求,我們將響應準備好的對應返回值內容,進而斷開對某個尚未完成或者難以訪問到的服務的強依賴)。在POSTMAN中這一步被刻意分拆爲邏輯更爲清晰的兩個階段:
- 作爲包裹Request和對應的模擬Response容器的Example概念;這就對應了第三步的"Saving the request R1’s response as an example (P1)"。
- 爲第二步創建的Collection創建對應的Mock Server。承載針對其中的Request創建的Examples。這就對應了第四步的"Creating a mock (M1) for the collection (C1)"。
- 之後我們就可以藉助POSTMAN內置的Environment特性實現通過對Mock Server和真實服務的訪問切換。這就對應了第五步的"Sending a request using the mock server (M1)"。
3. 實操
接下來讓我們從零開始逐一踐行上述操作步驟。
a. 創建一個調用第三方服務的HTTP請求。
b. 將創建的Request保存到Collection中。
c. 接下來開始創建Example。
d. 創建Mock Server(POSTMAN團隊背靠google,它自身就提供了域名和服務器)。
在彈出的頁面中輸入相應的配置信息(唯一必填項是Mock Server的名稱)
e. 獲取Mock Server地址填入上面創建的skdMockEnvironment中。
f. 再創建一個skdEnvironment。
g. 通過切換Environment實現在Mock Server和真實服務之間的無縫切換。