使用假客户端为 Client-Go 编写简单测试
问题:
如何有效地使用假客户端测试依赖 Kubernetes client-go 包的代码?
函数概述:
提供的函数 GetNamespaceCreationTime 检索命名空间的创建时间。它通常会访问真实的 Kubernetes API 来获取信息,但出于测试目的,您需要将函数与实际 API 隔离并使用假客户端。
测试结构:
测试应该初始化一个假客户端,将其传递给被测函数,并根据与假客户端的交互来验证函数的行为。
使用 Fake Clientset 中的配置:
在测试函数中,您应该使用 fake.NewSimpleClientset() 创建一个假客户端集。这个假客户端集提供了与假对象交互的各种方法。使用假客户端集配置配置对象是不必要的,因为假客户端已经处理了所有内部配置。
隔离集群内配置:
在测试中一致地使用假客户端,建议隔离获取集群内配置和创建 Kubernetes 客户端的步骤。引入一个单独的函数来检索客户端集,可以在测试期间覆盖该函数以返回假客户端集。
示例测试函数:
然后测试函数可以实例化假客户端集,调用被测函数传递假客户端集,并断言预期行为:
<code class="go">func TestGetNamespaceCreationTime(t *testing.T) { fakeClient := fake.NewSimpleClientset() got := GetNamespaceCreationTime(fakeClient, "default") want := int64(1257894000) // Assertions on how the fake client was interacted with go here }</code>
模拟和注入的其他提示:
对于更高级的模拟和依赖注入场景,考虑使用 Testify 或 GoMock 等依赖注入框架。这些框架可帮助您创建隔离且可验证的单元测试。
以上是如何使用假客户端有效测试 Client-Go:创建隔离且可验证的单元测试的详细内容。更多信息请关注PHP中文网其他相关文章!