Bei der Implementierung der GetNamespaceCreationTime-Funktion sind Sie beim Schreiben umfassender Komponententests auf eine Herausforderung 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 gefälschte Paket in der client-go-Bibliothek bietet eine Möglichkeit, gefälschte Clients zu erstellen, die sein können 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 Komponententests 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:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3