Как написать модульный тест для Kubernetes client-go, если используется собственный клиент?

Я использую 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.


person OMKAR HINGMIRE    schedule 18.05.2021    source источник
comment
Что именно вы пытаетесь проверить здесь?   -  person Riwen    schedule 18.05.2021
comment
пытаемся протестировать метод GetComCR, который фактически считывает пользовательский ресурс из кластера.   -  person OMKAR HINGMIRE    schedule 19.05.2021
comment
Но что вы пытаетесь unit протестировать здесь? Функция чрезвычайно проста с точки зрения тестируемой логики. По сути, все дело в обработке ошибок. На самом деле вряд ли достойный кандидат для модульного тестирования. Скорее, он может подойти для интеграционного тестирования, но это совершенно другая тема.   -  person Riwen    schedule 19.05.2021
comment
хорошо.. Я уже написал несколько UT для таких функций, как GetClusterConfig, GetClusterclient и т. д., но как мне протестировать GetComCR, где kubeClient.ComputeMons фактически подключается к кластеру и считывает данные CR. Как мне издеваться над самим кластером.   -  person OMKAR HINGMIRE    schedule 19.05.2021