這不是特定于代碼/案例的問題。
我是 Apex 的新手,我正在嘗試測驗對外部 API 執行標注的方法。我知道為了測驗這個方法,我必須創建一個實作 HttpCalloutMock 的類并在我的測驗中使用它。
但是,我想知道:在測驗中,當我呼叫正在測驗的實際方法時,是否會呼叫到幕后的 API?或者我放入模擬中的資料是唯一傳遞的資料?
(我問是因為,如果是后者,這是否意味著這些測驗會適得其反且不必要?)
uj5u.com熱心網友回復:
您在模擬類中提供的虛擬資料將盡職盡責地回傳。是的,這很煩人,雙重作業。
但除此之外還能怎么做?真正呼叫外部 API 可能會產生不良后果(向生產執行系統發送“我的真棒測驗訂單!!!1one!11”將是一場災難,尤其是如果您因為部署不斷失敗而多次這樣做的話)。當這樣的 API 出現故障時,您真的、真的需要將某些東西部署到生產環境中 - 您不應該成為 3rd 方服務器的人質,即使是測驗服務器也是如此。
與其抱怨,不如試著擁抱它。是的,是垃圾。但這是您測驗代碼如何處理不同輸出的機會。當 API 回應是“HTTP 500 內部服務器錯誤”、HTML 而不是 JSON 或什至沒有回應,只是超時時,它如何反應。你做得越扎實,你就會越自信。
真的有那么難嗎?捕獲幾個真實的訊息和錯誤,洗掉敏感資料,實施一些 switch 陳述句“if account number = 123 return this else return that”,你就完成了。
是的,它本質上意味著自己實作 3rd 方的邏輯。但是,對于測驗驅動的開發,理想情況下,您無論如何都會從他們的服務的虛擬表示開始,這與您擁有的 API“合同”足夠接近。作為獎勵 - 當某些事情突然中斷時,您可以對他們大喊大叫,并且您可以證明這不是您最終的改變。
最后,這與與另一個 SF 開發人員拆分作業并沒有太大區別。“好吧,我來做 UI 部分,你做 Apex 部分,這是我們承諾使用的資料介面,1 周后見”。你能相信這個人到什么程度,嗯?;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/373341.html
