登录
首页 >  Golang >  Go问答

单元测试 Kubernetes 控制器

来源:stackoverflow

时间:2024-02-27 08:27:25 429浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《单元测试 Kubernetes 控制器》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在尝试编写一个控制器,但在编写测试时遇到了一些问题。

我在控制器中使用了 k8s hpa 中的一些代码,并且在使用 testrestmapper 时发现了一些奇怪的情况。

基本上,当在此处使用断点运行此测试时,我看到返回了映射。

当我执行相同操作时,不会返回映射。

这里发生了什么魔法?

以下测试失败

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” 的导入。

如果不导入此路径,则不会向您用于获取 REST 映射的 schema 注册任何 API 组或版本。

通过导入路径,将注册 API 组,从而允许调用 schema.FromAPIVersionAndKind("apps/v1", "Deployment").GroupKind() 返回有效的 GroupKind。

理论要掌握,实操不能落!以上关于《单元测试 Kubernetes 控制器》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>