我正在尝试为使用Kubernetes go-client的某些代码创建unittest。我的unittest使用Kubernetes fake来模拟Kubernetes。我的unittest尝试通过调用Pods.List来创建一些假pod。
创建假吊舱的正确方法是什么?
我首先尝试在假冒的情况下调用Pods.Create
_, err := j.ClientSet.CoreV1().Pods(NAMESPACE).Create(
&v1.Pod{
TypeMeta: meta_v1.TypeMeta{
Kind: "Pod",
APIVersion: "v1",
},
ObjectMeta: v1.ObjectMeta{
Name: j.masterName(),
Labels: map[string]string{
"tag": "",
},
},
})
l, err := j.ClientSet.CoreV1().Pods(NAMESPACE).List(v1.ListOptions{})
if len(l.Items) == 0 {
t.Fatalf("No pods were returned by list.")
}
但是,对列表窗格的调用并没有返回窗格。
然后我尝试在创建假的时候创建pod; e.g。
j.ClientSet = fake.NewSimpleClientset(&v1.Pod{
TypeMeta: meta_v1.TypeMeta{
Kind: "pod",
},
ObjectMeta: v1.ObjectMeta{
Name: j.masterName(),
Labels: map[string]string{
"tag": "",
},
},
})
使用此代码,NewSimpleClientSet失败并出现紧急情况
panic: no matches for kind /, Kind=Pod [recovered]
panic: no matches for kind /, Kind=Pod
答案 0 :(得分:0)
您是否完全实现了ClientSet
的界面?似乎有些关于资源类的东西你没有处理过。
答案 1 :(得分:0)
事实证明,在我的情况下,我使用的是非常旧版本的Kubernetes客户端和假货。当我更新到最新的代码时它起作用了。