Einfache Tests für Client-Go mit einem gefälschten Client schreiben
Problem:
Wie können Sie effektiv Testcode, der auf dem Kubernetes-Client-Go-Paket basiert und einen gefälschten Client verwendet?
Funktionsübersicht:
Die bereitgestellte Funktion GetNamespaceCreationTime ruft die Erstellungszeit eines Namespace ab. Normalerweise greift es auf die echte Kubernetes-API zu, um die Informationen abzurufen. Zu Testzwecken müssen Sie die Funktion jedoch von der tatsächlichen API isolieren und stattdessen einen gefälschten Client verwenden.
Teststruktur:
Der Test sollte einen gefälschten Client initialisieren, ihn an die zu testende Funktion übergeben und das Verhalten der Funktion basierend auf den Interaktionen mit dem gefälschten Client überprüfen.
Verwenden von Config aus Fake Clientset:
In der Testfunktion sollten Sie mit fake.NewSimpleClientset() ein gefälschtes Clientset erstellen. Dieses gefälschte Clientset bietet verschiedene Methoden zur Interaktion mit gefälschten Objekten. Das Konfigurieren des Konfigurationsobjekts mit dem gefälschten Clientsatz ist nicht erforderlich, da der gefälschte Client bereits die gesamte interne Konfiguration verwaltet.
In-Cluster-Konfiguration isolieren:
Um den gefälschten Client konsistent in Tests zu verwenden ist es ratsam, die Schritte zum Abrufen der Cluster-Konfiguration und zum Erstellen des Kubernetes-Clients zu isolieren. Führen Sie eine separate Funktion zum Abrufen des Clientsatzes ein, die während des Tests überschrieben werden kann, um den gefälschten Clientsatz zurückzugeben.
Beispieltestfunktion:
Die Testfunktion kann dann den gefälschten Clientsatz instanziieren. Rufen Sie die zu testende Funktion auf, übergeben Sie den gefälschten Clientsatz und bestätigen Sie das erwartete Verhalten:
<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>
Zusätzliche Tipps für Mocking und Injektion:
Für fortgeschrittenere Mocking- und Abhängigkeitsinjektionsszenarien: Erwägen Sie die Verwendung eines Dependency-Injection-Frameworks wie Testify oder GoMock. Diese Frameworks helfen Ihnen, isolierte und überprüfbare Unit-Tests zu erstellen.
Das obige ist der detaillierte Inhalt vonSo testen Sie Client-Go effektiv mit einem gefälschten Client: Erstellen isolierter und überprüfbarer Unit-Tests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!