Bei der Implementierung der GetNamespaceCreationTime-Funktion sind Sie auf eine Herausforderung beim Schreiben umfassender Komponententests gestoßen. Die Funktion „GetNamespaceCreationTime“ interagiert mit dem Kubernetes-API-Server, um Namespace-Details abzurufen. Dies machte es schwierig, isolierte Tests zu schreiben, ohne sich auf tatsächliche API-Interaktionen zu verlassen.
Das Fake-Paket in der Client-Go-Bibliothek bietet eine Möglichkeit, Fake-Clients zu erstellen, die möglich sind zu Testzwecken verwendet. Diese gefälschten Clients imitieren das Verhalten echter Clients, arbeiten jedoch in einer kontrollierten Umgebung.
In diesem Fall können Sie die NewSimpleClientset-Funktion aus dem gefälschten Paket verwenden, um einen gefälschten Kubernetes-Client zu erstellen. Dieser Client kann verwendet werden, um den echten Client in Ihren Unit-Tests zu ersetzen, sodass Sie das Verhalten Ihres Codes isolieren und sich auf die Testlogik konzentrieren können.
Zum Testen der GetNamespaceCreationTime-Funktion können Sie einen Testfall wie folgt erstellen:
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) } }
In diesem Test erstellen Sie einen gefälschten Client, der den echten Kubernetes-Client ersetzt. Dann injizieren Sie Schein-Namespace-Daten in den gefälschten Client. Dadurch können Sie die Antwort simulieren, die Sie vom API-Server beim Abrufen der Namespace-Erstellungszeit erwarten würden. Sie können dann behaupten, dass die Ausgabe der GetNamespaceCreationTime-Funktion mit dem erwarteten Wert übereinstimmt.
Die Verwendung eines gefälschten Clients in Ihren Komponententests bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWie teste ich Client-Go-Code mit einem gefälschten Client?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!