Я использую client-go для чтения объектов Kubernetes. Есть несколько вызовов, когда я также читаю пользовательские ресурсы. Ниже приведен фрагмент кода:
func GetComCR(kubeClient *v1alpha1.ExampleV1Alpha1Client) []byte {
compute, err := kubeClient.ComputeMons("default").List(context.TODO(), metav1.ListOptions{})
if err != nil {
panic(err)
}
json_data, err := json.Marshal(compute)
if err != nil {
panic(err)
}
fmt.Println("compute_data: ", string(json_data))
return json_data
}
func GetClusterclient() *v1alpha1.ExampleV1Alpha1Client {
config := GetClusterConfig()
config.ContentConfig.GroupVersion = &schema.GroupVersion{Group: "acme.com", Version: "v1alpha1"}
config.APIPath = "/apis"
config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
config.UserAgent = rest.DefaultKubernetesUserAgent()
monitoringv1alpha1.AddToScheme(scheme.Scheme)
clientSet, _ := v1alpha1.NewForConfig(config)
return clientSet
}
func (this *ComputeController) Get() {
kubeclient := GetClusterclient()
json_data := GetComCR(kubeclient)
var resp interface{}
json.Unmarshal(json_data, &resp)
this.Data["json"] = resp
this.ServeJSON()
this.StopRun()
}
type ExampleV1Alpha1Client struct {
restClient rest.Interface
}
Теперь я хочу написать UT для метода GetComCR здесь. Я нашел одну тему здесь о UT:
Как написать простой тесты для client-go с использованием поддельного клиента?
Но мне это не помогло. Он спрашивает kubeClient kubernetes.Interface, но в моем случае это ExampleV1Alpha1Client.
Может ли кто-нибудь помочь мне с тем, как мне подделать клиента?
Я попробовал следующий тест:
func TestCRRead(t *testing.T) {
kubeClient := fake.NewSimpleClientset()
resp := GetComCR(kubeClient)
logs.Info("resp >>>", resp)
}
Но компиляция не удалась, так как NewSimpleClientset дает *fake.Clientset.