«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как протестировать код Client-Go с помощью поддельного клиента?

Как протестировать код Client-Go с помощью поддельного клиента?

Опубликовано 8 ноября 2024 г.
Просматривать:922

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

Тестирование кода Client-Go с поддельным клиентом

Постановка проблемы

При реализации функции 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 соответствуют ожидаемому значению.

Преимущества использования поддельного клиента

Использование поддельного клиента в модульных тестах дает несколько преимуществ:

  • Изоляция: Изолирует тестовый код от потенциальных побочных эффектов, вызванных взаимодействием с внешними ресурсы.
  • Скорость: Модульные тесты с поддельными клиентами выполняются намного быстрее, чем те, которые включают реальные вызовы API.
  • Детерминизм: Обеспечивает согласованность и предсказуемость результаты, поскольку поведение поддельного клиента контролируется тестовым кодом.
Заявление о выпуске Эта статья перепечатана по адресу: 1729745001. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3