ホームページ  >  記事  >  バックエンド開発  >  偽のクライアントを使用して Client-Go を効果的にテストする方法: 分離された検証可能な単体テストの作成

偽のクライアントを使用して Client-Go を効果的にテストする方法: 分離された検証可能な単体テストの作成

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 18:22:02484ブラウズ

How to Effectively Test Client-Go with a Fake Client: Creating Isolated and Verifiable Unit Tests

偽のクライアントを使用した Client-Go の簡単なテストの作成

問題:
どうすれば効果的にテストできますか偽のクライアントを使用して Kubernetes client-go パッケージに依存するテスト コードですか?

関数の概要:
提供された関数 GetNamespaceCreationTime は、名前空間の作成時間を取得します。通常、実際の Kubernetes API にアクセスして情報を取得しますが、テスト目的の場合は、実際の API から関数を分離し、代わりに偽のクライアントを使用する必要があります。

テスト構造:
テストでは、偽のクライアントを初期化し、それをテスト対象の関数に渡し、偽のクライアントとの対話に基づいて関数の動作を検証する必要があります。

偽のクライアントセットからの構成の使用:
テスト関数では、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。