Semasa melaksanakan fungsi GetNamespaceCreationTime, anda menghadapi cabaran dalam menulis ujian unit komprehensif. Fungsi GetNamespaceCreationTime berinteraksi dengan pelayan API Kubernetes untuk mengambil butiran ruang nama. Ini menyukarkan untuk menulis ujian terpencil tanpa bergantung pada interaksi API sebenar.
Pakej palsu dalam pustaka client-go menyediakan cara untuk mencipta klien palsu yang boleh digunakan untuk tujuan ujian. Pelanggan palsu ini meniru gelagat pelanggan sebenar tetapi beroperasi dalam persekitaran terkawal.
Dalam kes ini, anda boleh menggunakan fungsi NewSimpleClientset daripada pakej palsu untuk mencipta klien Kubernetes palsu. Pelanggan ini boleh digunakan untuk menggantikan klien sebenar dalam ujian unit anda, membolehkan anda mengasingkan gelagat kod anda dan menumpukan pada logik ujian.
Untuk menguji fungsi GetNamespaceCreationTime , anda boleh mencipta kes ujian seperti berikut:
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) } }
Dalam ujian ini, anda mencipta klien palsu, yang menggantikan klien Kubernetes sebenar. Kemudian anda menyuntik data ruang nama palsu ke dalam klien palsu. Ini membolehkan anda mensimulasikan respons yang anda jangkakan daripada pelayan API apabila mengambil masa penciptaan ruang nama. Anda kemudiannya boleh menegaskan bahawa output fungsi GetNamespaceCreationTime sepadan dengan nilai yang dijangkakan.
Menggunakan klien palsu dalam ujian unit anda memberikan beberapa faedah:
Atas ialah kandungan terperinci Bagaimana untuk Menguji Kod Client-Go dengan Pelanggan Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!