在實作GetNamespaceCreationTime 函數時,您在編寫全面的單元測試時遇到了挑戰。 GetNamespaceCreationTime 函數與 Kubernetes API 伺服器互動以取得命名空間詳細資訊。這使得在不依賴實際 API 互動的情況下編寫隔離測試變得困難。
client-go 庫中的 fake 套件提供了一種建立假客戶端的方法,可以用於測試目的。這些假客戶端模仿真實客戶端的行為,但在受控環境中運作。
在這種情況下,您可以使用假包中的 NewSimpleClientset 函數來建立假 Kubernetes 用戶端。此客戶端可用於替代單元測試中的真實客戶端,讓您隔離程式碼的行為並專注於測試邏輯。
用於測試GetNamespaceCreationTime 函數,您可以如下建立測試案例:
func TestGetNamespaceCreationTime(t *testing.T) { fakeClient := fake.NewSimpleClientset() got := GetNamespaceCreationTime(fakeClient, "default") want := int64(1257894000) // Inject mock Namespace data into the fake client nsMock := fakeClient.CoreV1().Namespaces() nsMock.Create(&v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "default", CreationTimestamp: metav1.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC), }, }) if got != want { t.Errorf("got %q want %q", got, want) } }
在此測試中,您建立一個假客戶端,它替換真正的Kubernetes 客戶端。然後將模擬命名空間資料注入假客戶端。這允許您模擬在獲取命名空間創建時間時期望從 API 伺服器獲得的回應。然後,您可以斷言 GetNamespaceCreationTime 函數的輸出與預期值相符。
在單元測試中使用假客戶端有幾個好處:
以上是如何使用假客戶端測試 Client-Go 程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!