ホームページ  >  記事  >  バックエンド開発  >  定数に依存する Go 関数をテストするにはどうすればよいでしょうか?

定数に依存する Go 関数をテストするにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 14:25:29141ブラウズ

How Can We Test Go Functions Dependent on Constants?

テストのために Go で定数を再定義する

問題の概要:
Go では、定数は不変の値を提供します。宣言後の変更はできません。ただし、これらの定数に依存するコードをテストする場合、テスト目的でさまざまな値を挿入するのは困難になります。

提案された解決策:
潜在的な解決策は、コードをリファクタリングして含めることにあります。ベース URL をパラメータとして受け取り、引数として定数値を使用して元の関数を呼び出す 2 番目の関数。

実装の詳細:

  1. ヘルパー関数を導入します:

    • 定数baseUrl_を、引数としてベース URL を受け入れる関数に置き換えます:

      <code class="go">func myFuncImpl(baseUrl string) string {
        // Use `baseUrl` in the function
      }</code>
  2. 元の関数を変更します:

    • 元の関数 (MyFunc()) にヘルパー関数を呼び出します:

      <code class="go">func MyFunc() string {
        return myFuncImpl(baseUrl_)
      }</code>
  3. 定数を保持します:

    • 定数baseUrl_をMyFunc( ) 関数を使用して、意図した定数値が運用コードで使用されるようにします。

利点:

  • 元の値を維持します。 API を使用して、運用コードの潜在的な脆弱性を回避します。
  • 定数を変更せずに、異なる値を使用して MyFunc() 関数をテストできます。
  • テストは、次の専用関数 (myFuncImpl()) にアクセスできます。テスト中に柔軟な値の割り当てが可能です。

例:

<code class="go">const baseUrl_ = "http://google.com"

func MyFunc() string {
    return myFuncImpl(baseUrl_)
}</code>

テスト コードでは、myFuncImpl() を直接呼び出して、カスタム値を割り当てることができます。 BaseUrl:

<code class="go">func TestMyFunc(t *testing.T) {
    result := myFuncImpl("http://example.org")
    // Assertions and tests
}</code>

以上が定数に依存する Go 関数をテストするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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