단위 테스트는 클라이언트의 신뢰성과 견고성을 보장하는 데 필수적입니다. 암호. 그러나 Kubernetes와 같은 외부 시스템과 상호 작용하는 코드를 테스트하는 것은 어려울 수 있습니다. 여기서 가짜 클라이언트가 등장합니다.
제공된 코드를 테스트하려면 Kubernetes를 대신할 가짜 클라이언트를 생성해야 합니다. API 서버. 이를 수행하는 방법의 예는 다음과 같습니다.
<br>import (<br> "fmt"<br> "k8s.io/api/core/v1"<br> Metav1 "k8s.io/ apimachinery/pkg/apis/meta/v1"<br> fake "k8s.io/client-go/kubernetes/fake"<br> "time"<br>)</p> <p>func GetNamespaceCreationTime(kubeClient kubernetes.Interface , 네임스페이스 문자열) int64 {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ns, err := kubeClient.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{}) if err != nil { panic(err.Error()) } fmt.Printf("%v \n", ns.CreationTimestamp) return (ns.GetCreationTimestamp().Unix())
}
func TestGetNamespaceCreationTime(t *testing.T) {
kubeClient := fake.NewSimpleClientset()
got := GetNamespaceCreationTime (kubeClient, "default")
want := int64(1257894000)
nsMock := kubeClient.CoreV1().Namespaces()
nsMock.Create(&v1.Namespace{
ObjectMeta: metav1.ObjectMeta{ Name: "default", CreationTimestamp: metav1.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC), },
})
if got != want {
t.Errorf("got %q want %q", got, want)
}
가짜 클라이언트를 생성함으로써 테스트 중인 코드를 외부 종속성으로부터 분리하고 단위 테스트를 효율적으로 실행할 수 있습니다. 이 접근 방식을 통해 개발자는 실제 Kubernetes 리소스나 클러스터 연결 없이도 코드의 핵심 기능을 테스트할 수 있습니다.
위 내용은 Client-Go에서 가짜 클라이언트를 사용하여 단위 테스트 코드를 수행하는 방법을 설명할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!