Unit-Tests sind unerlässlich, um die Zuverlässigkeit und Robustheit von zu gewährleisten Code. Allerdings kann es schwierig sein, Code zu testen, der mit externen Systemen wie Kubernetes interagiert. Hier kommen Fake-Clients ins Spiel.
Um den bereitgestellten Code zu testen, müssen wir einen Fake-Client erstellen, der für Kubernetes einspringt API-Server. Hier ist ein Beispiel dafür:
<br>import (<br> "fmt"<br> "k8s.io/api/core/v1"<br> metav1 "k8s.io/ apimachinery/pkg/apis/meta/v1"<br> fake "k8s.io/client-go/kubernetes/fake"<br> "time"<br>)</p> <p>func GetNamespaceCreationTime(kubeClient kubernetes.Interface , Namespace-Zeichenfolge) int64 {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ns, err := kubeClient.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{}) if err != nil { panic(err.Error()) } fmt.Printf("%v \n", ns.CreationTimestamp) return (ns.GetCreationTimestamp().Unix())
}
func TestGetNamespaceCreationTime(t *testing.T) {
kubeClient := fake.NewSimpleClientset()
got := GetNamespaceCreationTime (kubeClient, "default")
want := int64(1257894000)
nsMock := kubeClient.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)
}
Durch die Erstellung eines Fake-Clients können wir den zu testenden Code von externen Abhängigkeiten isolieren und Unit-Tests effizient durchführen. Dieser Ansatz ermöglicht es Entwicklern, die Kernfunktionalität des Codes zu testen, ohne dass tatsächliche Kubernetes-Ressourcen oder eine Clusterverbindung erforderlich sind.
Das obige ist der detaillierte Inhalt vonKönnen Sie beschreiben, wie man Code mit einem gefälschten Client in Client-Go Unit-Tests durchführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!