ホームページ >バックエンド開発 >Golang >golang 関数のエラー処理での単体テスト

golang 関数のエラー処理での単体テスト

WBOY
WBOYオリジナル
2024-05-01 16:36:011026ブラウズ

単体テスト Go 言語での関数エラー処理方法には次のものがあります。 シミュレートされた入力の作成: エラーが制御されたシミュレートされたオブジェクトを作成します。エラー メッセージをアサートする: 返されたエラー メッセージを予期されるメッセージと一致させます。エラー状態をカバーする: 考えられるすべてのエラー状態に対するテスト ケースを作成します。

golang 関数のエラー処理での単体テスト

Go 言語関数エラー処理での単体テスト

バックグラウンド

In In Go 言語では、関数内のエラーは error 型の値をチェックすることで処理されます。正しいエラー処理を保証するには、単体テストを実行することが重要です。

単体テスト戦略

次の戦略は、関数内のエラー処理を単体テストする場合に非常に効果的です。

  • Create Mock as input: 制御されたエラーを返すモック オブジェクト (ファイル システムまたはネットワーク呼び出しのシミュレートなど) を作成します。
  • アサート エラー メッセージ: assert.Equal() などのアサーション ライブラリを使用して、返されたエラー メッセージが予想されるエラー メッセージと一致することを確認します。
  • エラー状態のカバー: 考えられるすべてのエラー状態に対するテスト ケースを作成します。これにより、エラー処理ロジックがあらゆるケースで期待どおりに動作することが保証されます。

実際的なケース

2 つの数値の合計を計算する次の関数を考えてみましょう:

func Sum(a, b int) (int, error) {
    if a < 0 || b < 0 {
        return 0, errors.New("non-negative integers only")
    }
    return a + b, nil
}

単体テスト

import (
    "errors"
    "testing"
)

func TestSum(t *testing.T) {
    tests := []struct {
        a, b int
        expected int
        err error
    }{
        {a: 1, b: 2, expected: 3, err: nil},
        {a: -1, b: 2, expected: 0, err: errors.New("non-negative integers only")},
    }

    for _, tt := range tests {
        t.Run("test", func(t *testing.T) {
            sum, err := Sum(tt.a, tt.b)
            if sum != tt.expected {
                t.Errorf("Expected %d, got %d", tt.expected, sum)
            }
            if !errors.Is(err, tt.err) {
                t.Errorf("Expected error %q, got %q", tt.err, err)
            }
        })
    }
}

結論

Go での関数エラー処理は、シミュレートされた入力、エラー メッセージ アサーション、および徹底的なテスト ケース カバレッジを使用して効果的にテストできます。これは、コードの堅牢性と信頼性を確保するのに役立ちます。

以上がgolang 関数のエラー処理での単体テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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