我正在尝试编写一个 Controller ,但在编写测试时遇到了一些问题。
我在我的 Controller 中使用了一些来自 k8s HPA 的代码,但在使用 testrestmapper
时我看到了一些奇怪的东西。
基本上在运行这个 test 时带断点 here我看到映射已返回。
当我执行相同操作时,不会返回映射。
这里发生了什么魔法?
以下测试失败
package main
import (
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/api/meta/testrestmapper"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"testing"
)
func TestT(t *testing.T) {
mapper := testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Scheme)
gk := schema.FromAPIVersionAndKind("apps/v1", "Deployment").GroupKind()
mapping, err := mapper.RESTMapping(gk)
assert.NoError(t, err)
assert.NotNil(t, mapping)
}
最佳答案
我认为这是因为您缺少 _ "k8s.io/kubernetes/pkg/apis/apps/install"
的导入。
如果不导入此路径,则没有 API 组或版本注册到您用于获取 REST 映射的 schema
。
通过导入路径,将注册 API 组,允许调用 schema.FromAPIVersionAndKind("apps/v1", "Deployment").GroupKind()
以返回有效的 GroupKind。
关于go - kubernetes Controller 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327618/