単体テストでのモッキングは、単体テストでテスト ダブルを作成して外部依存関係を置き換え、特定の関数を分離してテストできるようにする手法です。基本原則は、インターフェイスの定義、モックの作成、モックの挿入です。 GoogleMock モックを使用するには、インターフェースを定義し、モックを作成し、それをテスト関数に挿入する必要があります。 testify/mock シミュレーションを使用するには、MockClient 構造体を宣言し、Get メソッドの期待値を設定し、テスト関数でシミュレーションを設定する必要があります。
単体テストにおいて、モックとは、テスト対象のコード内の外部依存関係を置き換えるテスト ダブルを作成する手法です。これにより、他のコンポーネントと対話することなく、特定の機能を分離してテストできます。
シミュレーションの基本原則は次のとおりです:
net/http
パッケージを使用して次の関数を考えてみましょう:
func GetPage(url string) (*http.Response, error) { client := http.Client{} return client.Get(url) }
この関数をテストするには、モックを作成する必要があります。 http.Client
これは外部依存関係であるためです。
シミュレーションに 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 ライブラリはシミュレーション機能も提供します。使用例は次のとおりです。
以上がGo 関数の単体テストにおけるモック手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。