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

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

Linda Hamilton
リリース: 2024-12-18 09:41:10
オリジナル
231 人が閲覧しました

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

Go でパッケージからインポートされた関数をモックする

外部パッケージからインポートされた関数を利用する Go メソッドをテストする場合、効果的なテストのためにこれらの外部関数をモックする必要がある場合があります。 1 つのアプローチは、コードをリファクタリングし、外部関数を直接呼び出す代わりに中間関数呼び出しを導入することです。

この例では、

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}
ログイン後にコピー

タイプ func の新しい変数 zSomeFunc を作成し、外部関数 z.SomeFunc を使用して初期化します。次に、パッケージで z.SomeFunc の代わりに zSomeFunc を呼び出すようにします。

var zSomeFunc = z.SomeFunc

func abc() {
    // ...
    v := zSomeFunc()
    // ...
}
ログイン後にコピー

これで、テストで別の関数を zSomeFunc に割り当てることができます。テストで定義され、事前定義された値を返す関数、または特定のアクションを実行します。これにより、テスト目的で外部関数の動作をモックすることができます。

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

    zSomeFunc = func() int {
        // Do whatever you want to do and return whatever value you need.
        return 1
    }

    // Call the tested function.
    abc()

    // Test the expected behavior.
}
ログイン後にコピー

あるいは、x.y.z パッケージのモック実装を作成し、Go Mocking Framework を使用して SomeFunc() 関数を具体的にモックすることもできます。 .

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

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