ホームページ >バックエンド開発 >Golang >効果的なテストのために Go でインポートされた関数をモックするにはどうすればよいですか?

効果的なテストのために Go でインポートされた関数をモックするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-25 03:55:17338ブラウズ

How Can I Mock Imported Functions in Go for Effective Testing?

インポートされた関数の部分モッキング

Go では、外部パッケージからインポートされた関数に依存する関数のテストは困難な場合があります。次の例を考えてみましょう:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}

Go で z.SomeFunc() をモックできますか?

モッキングのためのリファクタリング

はい、簡単なコード変更。関数型変数 zSomeFunc を導入し、それを z.SomeFunc で初期化することにより、パッケージ コードは z.SomeFunc() の代わりにこの変数を呼び出すことができます。これにより、テスト中にインポートされた関数をモックすることができます。

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}

テストでのモック

テストでは、テストに必要な動作をするカスタム関数を zSomeFunc に割り当てることができます。

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}

コードをリファクタリングすることで、インポートされた関数を模擬し、コードに対するその影響をより効果的にテストできます。この手法は、サードパーティの依存関係をテストする場合や、対象を絞ったテストのために機能の特定の部分を分離する場合に特に役立ちます。

以上が効果的なテストのために Go でインポートされた関数をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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