实际功能和测试功能之间的类型不匹配

问题描述

我写了以下函数。它会执行以下操作

  1. 遍历给定的名称空间并遍历所有pod。
  2. 返回一个字符串切片,其中包含与命名约定匹配的pod。
var slavePods []string

func getSlavePods(clientset *kubernetes.Clientset,ns string,release string) []string {
    log.Printf("INFO :: Checking slave pods in %s namespace.\n",ns)
    pods,err := clientset.CoreV1().Pods(ns).List(context.TODO(),metav1.ListOptions{})
    if err != nil {
        panic(err.Error())
    }

    for _,po := range pods.Items {
        SlavePodRegex := "zjs-" + release + "-(tiny|small|medium|large)-(.*)"
        log.Printf("INFO :: Regex is %s",SlavePodRegex)
        matched,_ := regexp.MatchString(SlavePodRegex,po.Name)
        if matched{
            slavePods = append(slavePods,po.Name)
        }
    }

    return slavePods
}

在上述情况下,客户端集的类型为*"k8s.io/client-go/kubernetes".Clientset

上述功能可以很好地工作并返回所需的结果。

现在,我正在为此功能编写测试。测试是


import (
    "context"
    v1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes/fake"
    "log"
    "testing"
)

func TestgetSlavePods(t *testing.T) {

    // Create the fake client.
    client := fake.NewSimpleClientset()

    // Inject an event into the fake client.
    p := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "zjs-modelt-develop-small-n3d8t"}}
    _,err := client.CoreV1().Pods("test-ns").Create(context.TODO(),p,metav1.CreateOptions{})
    if err != nil {
        t.Fatalf("error injecting pod add: %v",err)
    }

     // Actual test
     podNames := getSlavePods(client,"test-ns","modelt-develop")
     if podNames != ["zjs-modelt-develop-small-n3d8t"] {
         t.Error("Expected pod is not found")
     }
}

我正在利用假库初始化一个假客户端,在命名空间中创建一个pod,然后测试该功能。但我遇到了错误

Cannot use 'client' (type *"k8s.io/client-go/kubernetes/fake".Clientset) as type *"k8s.io/client-go/kubernetes".Clientset

因此似乎存在一个问题,我无法使用clientset调用该函数,因为实际函数与测试函数的类型不同。我正在关注this example,他们似乎在做同样的事情。有什么我想念的吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...