ホームページ > バックエンド開発 > Golang > 単体テストのために Go で外部関数をモックするにはどうすればよいですか?

単体テストのために Go で外部関数をモックするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-02 18:57:37
オリジナル
271 人が閲覧しました

How Can I Mock External Functions in Go for Unit Testing?

Go で外部関数をモックする

外部パッケージに依存する関数をテストする場合、それらの外部関数をモックすることは、分離された信頼性の高い関数を作成するために不可欠です。テスト。次の例を考えてみましょう:

import x.y.z

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

abc() の単体テストのために z.SomeFunc() をモックできますか?

解決策: リファクタリングとモッキング

はい、z.SomeFunc() のモックは簡単なリファクタリングで可能です。関数型の変数 zSomeFunc を導入し、z.SomeFunc で初期化します。次に、z.SomeFunc() を呼び出す関数内で、代わりに zSomeFunc() を呼び出します。

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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート