ホームページ > バックエンド開発 > Golang > Go 関数の単体テストにおけるモック手法

Go 関数の単体テストにおけるモック手法

WBOY
リリース: 2024-04-30 18:21:01
オリジナル
663 人が閲覧しました

単体テストでのモッキングは、単体テストでテスト ダブルを作成して外部依存関係を置き換え、特定の関数を分離してテストできるようにする手法です。基本原則は、インターフェイスの定義、モックの作成、モックの挿入です。 GoogleMock モックを使用するには、インターフェースを定義し、モックを作成し、それをテスト関数に挿入する必要があります。 testify/mock シミュレーションを使用するには、MockClient 構造体を宣言し、Get メソッドの期待値を設定し、テスト関数でシミュレーションを設定する必要があります。

Go 函数单元测试中的模拟技巧

Go 関数単体テストにおけるモッキング手法

単体テストにおいて、モックとは、テスト対象のコード内の外部依存関係を置き換えるテスト ダブルを作成する手法です。これにより、他のコンポーネントと対話することなく、特定の機能を分離してテストできます。

シミュレーションの基本原則

シミュレーションの基本原則は次のとおりです:

  1. インターフェイスの定義:コンポーネントを表すインターフェイスを作成します。シミュレートされる。
  2. モックの作成: 予想される呼び出しと戻り値を定義できる、このインターフェイスのモック実装を作成します。
  3. モックの挿入: テスト関数で、実際の依存関係をモックに置き換えます。

実際的なケース

net/http パッケージを使用して次の関数を考えてみましょう:

func GetPage(url string) (*http.Response, error) {
    client := http.Client{}
    return client.Get(url)
}
ログイン後にコピー

この関数をテストするには、モックを作成する必要があります。 http.Client これは外部依存関係であるためです。

シミュレーションに GoogleMock を使用する

シミュレーションに GoogleMock ライブラリを使用できます。まず、モックするインターフェイスを定義します:

type MockClient interface {
    Get(url string) (*http.Response, error)
}
ログイン後にコピー

次に、new(MockClient) を使用してモックを作成し、それをテスト関数に挿入します:

import (
    "testing"

    "github.com/golang/mock/gomock"
)

func TestGetPage(t *testing.T) {
    ctrl := gomock.NewController(t)
    defer ctrl.Finish()

    client := mock.NewMockClient(ctrl)
    client.EXPECT().Get("http://example.com").Return(&http.Response{}, nil)

    resp, err := GetPage("http://example.com")
    assert.NoError(t, err)
    assert.NotNil(t, resp)
}
ログイン後にコピー

シミュレーションに testify/mock を使用する

testify/mock ライブラリはシミュレーション機能も提供します。使用例は次のとおりです。

以上がGo 関数の単体テストにおけるモック手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート