使用假客戶端為Client-Go 編寫簡單測試
問題:
如何有效地使用假客戶端測試依賴Kubernetes client-go 套件的程式碼?
函數概述:
提供的函數 GetNamespaceCreationTime 會擷取命名空間的建立時間。它通常會訪問真實的 Kubernetes API 來獲取信息,但出於測試目的,您需要將函數與實際 API 隔離並使用假客戶端。
測試結構:
測試應該初始化一個假客戶端,將其傳遞給被測函數,並根據與假客戶端的交互來驗證函數的行為。
使用 Fake Clientset 中的配置:
在測試函數中,您應該使用 fake.NewSimpleClientset() 建立一個假客戶端集。這個假客戶端集提供了與假物件互動的各種方法。使用假客戶端集配置配置物件是不必要的,因為假客戶端已經處理了所有內部配置。
隔離叢集內配置:
在測試中一致地使用假客戶端,建議隔離獲取叢集內配置和建立 Kubernetes 客戶端的步驟。引入一個單獨的函數來檢索客戶端集,可以在測試期間覆寫該函數以傳回假客戶端集。
範例測試函數:
然後測試函數可以實例化假客戶端集,呼叫被測函數傳遞假客戶端集,並斷言預期行為:
<code class="go">func TestGetNamespaceCreationTime(t *testing.T) { fakeClient := fake.NewSimpleClientset() got := GetNamespaceCreationTime(fakeClient, "default") want := int64(1257894000) // Assertions on how the fake client was interacted with go here }</code>
模擬和注入的其他提示:
對於更高級的模擬和依賴注入場景,考慮使用Testify 或GoMock 等依賴注入框架。這些框架可協助您建立隔離且可驗證的單元測試。
以上是如何使用假客戶端有效測試 Client-Go:建立隔離且可驗證的單元測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!