„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie teste ich Client-Go-Code mit einem gefälschten Client?

Wie teste ich Client-Go-Code mit einem gefälschten Client?

Veröffentlicht am 08.11.2024
Durchsuche:150

How to Test Client-Go Code with a Fake Client?

Testen von Client-Go-Code mit gefälschtem Client

Problemstellung

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.

Lösung mit gefälschtem Client

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.

Testimplementierung

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.

Vorteile der Verwendung eines gefälschten Clients

Die Verwendung eines gefälschten Clients in Ihren Komponententests bietet mehrere Vorteile:

  • Isolation: Isoliert den Testcode von möglichen Nebenwirkungen, die durch Interaktionen mit externen Quellen verursacht werden Ressourcen.
  • Geschwindigkeit: Unit-Tests mit gefälschten Clients laufen viel schneller als solche, die echte API-Aufrufe beinhalten.
  • Determinismus: Sorgt für Konsistenz und Vorhersehbarkeit Ergebnisse, da das Verhalten des gefälschten Clients durch den Testcode gesteuert wird.
Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729745001 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

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