При реализации функции GetNamespaceCreationTime вы столкнулись с проблемой написания комплексных модульных тестов. Функция GetNamespaceCreationTime взаимодействует с сервером API Kubernetes для получения сведений о пространстве имен. Это затрудняло написание изолированных тестов, не полагаясь на реальное взаимодействие API.
Поддельный пакет в библиотеке client-go предоставляет способ создания поддельных клиентов, которые могут быть используется в целях тестирования. Эти поддельные клиенты имитируют поведение реальных клиентов, но работают в контролируемой среде.
В этом случае вы можете использовать функцию NewSimpleClientset из поддельного пакета, чтобы создать поддельный клиент Kubernetes. Этот клиент можно использовать для замены реального клиента в модульных тестах, позволяя изолировать поведение вашего кода и сосредоточиться на логике тестирования.
Для проверки функции GetNamespaceCreationTime , вы можете создать тестовый пример следующим образом:
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) } }
В этом тесте вы создадите поддельный клиент, который заменяет настоящий клиент Kubernetes. Затем вы вводите фиктивные данные пространства имен в поддельный клиент. Это позволяет вам имитировать ответ, который вы ожидаете от сервера API при получении времени создания пространства имен. Затем вы можете утверждать, что выходные данные функции GetNamespaceCreationTime соответствуют ожидаемому значению.
Использование поддельного клиента в модульных тестах дает несколько преимуществ:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3