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.
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.
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.
Usar um cliente falso em seus testes de unidade oferece vários benefícios:
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