"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como testar o código Client-Go com um cliente falso?

Como testar o código Client-Go com um cliente falso?

Publicado em 2024-11-08
Navegar:685

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

Testando código Client-Go com cliente falso

Declaração de problema

Ao implementar a função GetNamespaceCreationTime, você encontrou um desafio ao escrever testes de unidade abrangentes. A função GetNamespaceCreationTime interage com o servidor API Kubernetes para buscar detalhes do namespace. Isso tornou difícil escrever testes isolados sem depender de interações reais da API.

Solução usando cliente falso

O pacote falso na biblioteca client-go fornece uma maneira de criar clientes falsos que podem ser usado para fins de teste. Esses clientes falsos imitam o comportamento de clientes reais, mas operam em um ambiente controlado.

Nesse caso, você pode usar a função NewSimpleClientset do pacote falso para criar um cliente Kubernetes falso. Este cliente pode ser usado para substituir o cliente real em seus testes de unidade, permitindo isolar o comportamento do seu código e focar na lógica de teste.

Implementação de teste

Para testar a função GetNamespaceCreationTime , você pode criar um caso de teste da seguinte maneira:

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)
  }
}

Neste teste, você cria um cliente falso, que substitui o cliente Kubernetes real. Em seguida, você injeta dados de namespace simulados no cliente falso. Isso permite simular a resposta que você esperaria do servidor API ao buscar o horário de criação do namespace. Você pode então afirmar que a saída da função GetNamespaceCreationTime corresponde ao valor esperado.

Benefícios de usar um cliente falso

Usar um cliente falso em seus testes de unidade oferece vários benefícios:

  • Isolamento: isola o código de teste de possíveis efeitos colaterais causados ​​por interações com recursos.
  • Velocidade: Testes de unidade com clientes falsos são executados muito mais rápido do que aqueles que envolvem chamadas de API reais.
  • Determinismo: Garante consistência e previsibilidade resultados, já que o comportamento do cliente falso é controlado pelo código de teste.
Declaração de lançamento Este artigo foi reimpresso em: 1729745001 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3