在實作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 函數的輸出與預期值相符。
在單元測試中使用假客戶端有幾個好處:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3