ホームページ > バックエンド開発 > Golang > Go テストケースで Struct メソッド呼び出しをモックするにはどうすればよいですか?

Go テストケースで Struct メソッド呼び出しをモックするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 07:09:17
オリジナル
897 人が閲覧しました

How Can I Mock Struct Method Calls in Go Test Cases?

Go テスト ケースでの構造体のメソッド呼び出しのモック

Go では、構造体のメソッド呼び出しのモックに対するネイティブ サポートはありません。ただし、同様の機能を実現するためにいくつかの手法を使用できます。

1 つのアプローチは、構造体の関連メソッドを表すインターフェイスを定義し、そのインターフェイスのモック実装を作成することです。このモック実装は、実際の構造体の代わりにテスト ケースに挿入できます。

次のコード サンプルを検討してください。

type A struct {}

func (a *A) perform(url string){
    // ...
}
ログイン後にコピー

これを使用する invoke() 関数をテストするには、 () メソッドを使用すると、A 構造体のモック実装を作成できます。

type AMock struct {
    PerformFunc func(url string)
}

func (m *AMock) perform(url string) {
    if m.PerformFunc != nil {
        m.PerformFunc(url)
    }
}
ログイン後にコピー

テスト ケースでは、モックは次のようになります。 invoke() 関数に注入されます:

func TestInvoke(t *testing.T) {
    mock := &AMock{}
    mock.PerformFunc = func(url string) {
        // Test logic for mock behavior
    }
    invoke(mock, "example.com")
}
ログイン後にコピー

モックに PerformFunc フィールドを設定すると、モック化されたメソッドの動作を制御し、テストでアサートできます。

別のアプローチモッキングには、モッキングをサポートする依存関係注入フレームワークの使用が含まれます。これにより、より柔軟で汎用性の高いモック機能が可能になりますが、追加の構成とセットアップが必要です。

最終的に、モックに最適な方法は、開発中のテスト ケースとアプリケーションの特定の要件と制約によって異なります。

以上がGo テストケースで Struct メソッド呼び出しをモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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