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

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

Linda Hamilton
リリース: 2024-12-29 20:51:13
オリジナル
1036 人が閲覧しました

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

パッケージ依存メソッドでインポートされた関数をモックする

外部パッケージからインポートされた関数に依存するメソッドのテストを作成する場合、モックが必要になる場合がありますインポートされた関数の実際の実装からテストを分離します。 Go では、これは簡単なリファクタリングで実現できます。

x.y.z パッケージから関数をインポートして使用する次のメソッドを考えてみましょう。

1

2

3

4

5

6

7

import x.y.z

 

func abc() {

    ...

    v := z.SomeFunc()

    ...

}

ログイン後にコピー

SomeFunc() をモックするには、インポートされた関数で初期化された関数型の変数 zSomeFunc:

1

2

3

4

5

6

7

var zSomeFunc = z.SomeFunc

 

func abc() {

    ...

    v := zSomeFunc()

    ...

}

ログイン後にコピー

テストでは、次のことができます。 zSomeFunc に別の関数 (テスト スイート自体内で定義された関数) を割り当て、必要に応じて動作を操作します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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