我正在为使用 Kubebuilder 创建的示例 Kubernetes CRD 和控制器编写一些单元测试。控制器中的主要代码创建 Kubernetes 资源(命名空间和其中的 ResourceQuota)。在我的单元测试中,我想验证控制器是否实际创建了这些。我使用client.Client
使用默认对象创建的sigs.k8s.io/controller-runtime/pkg/manager
对象。
mgr, _ := manager.New(cfg, manager.Options{})
cl := mgr.GetClient()
rq := &corev1.ResourceQuota{}
err = cl.Get(ctx, types.NamespacedName{Name: "my-quota", Namespace:
"my-namespace"}, rq)
我知道主代码运行良好,因为我在真实的实时环境中对其进行了测试。我看到主要代码是从单元测试中调用的。但是,单元测试中的上述代码不起作用;即对 Get() 的调用会返回我期望的 ResourceQuota。我也尝试过 List() api,但这也没有返回任何东西。也没有错误。只是一个空洞的回应。
为了让 Kubebuilder 中的 K8S 控制平面运行单元测试,我是否必须做一些特殊/不同的事情?