Dans ce cas, nous visons à composer une fonction de test pour la fonction GetNamespaceCreationTime, qui est destinée à récupérer l'horodatage de création pour un espace de noms Kubernetes particulier. Cependant, vous rencontrez des difficultés pour trouver une approche appropriée pour intégrer la logique d'initialisation et interagir avec le faux client.
Pour tester efficacement la fonction GetNamespaceCreationTime, le processus d'initialisation ne doit pas résider dans le fonctionner lui-même. Au lieu de cela, l'interface client Kubernetes doit être passée en paramètre à la fonction.
Remplacez le code existant dans la fonction GetNamespaceCreationTime par ce qui suit :
<code class="go">import ( "fmt" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "time" ) func GetNamespaceCreationTime(kubeClient kubernetes.Interface, namespace string) int64 { ns, err := kubeClient.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{}) if err != nil { panic(err.Error()) } fmt.Printf("%v \n", ns.CreationTimestamp) return ns.GetCreationTimestamp().Unix() }</code>
Ensuite, définissez une fonction pour obtenir l'ensemble du client :
<code class="go">func GetClientSet() kubernetes.Interface { config, err := rest.InClusterConfig() if err != nil { log.Warnf("Could not get in-cluster config: %s", err) return nil, err } client, err := kubernetes.NewForConfig(config) if err != nil { log.Warnf("Could not connect to in-cluster API server: %s", err) return nil, err } return client, err }</code>
Dans la fonction TestGetNamespaceCreationTime, instanciez le faux client et invoquez la méthode GetNamespaceCreationTIme :
<code class="go">func TestGetNamespaceCreationTime(t *testing.T) { kubeClient := fake.NewSimpleClientset() got := GetNamespaceCreationTime(kubeClient, "default") want := int64(1257894000) nsMock := config.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) } }</code>
Ce test garantit que le L'horodatage de création attendu pour l'espace de noms « par défaut » est récupéré avec précision à l'aide du faux client.
Envisagez d'introduire des fonctions fictives pour améliorer la testabilité et la flexibilité du code, telles que :
<code class="go">func fakeGetInclusterConfig() (*rest.Config, error) { return nil, nil } func fakeGetInclusterConfigWithError() (*rest.Config, error) { return nil, errors.New("fake error getting in-cluster config") }</code>
Ces méthodes permettent des scénarios de tests plus robustes, dans lesquels vous pouvez affirmer des comportements pour une récupération de configuration dans le cluster réussie ou échouée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!