ホームページ  >  記事  >  バックエンド開発  >  Go HTTP エンドポイント テストで Request.FormFile を設定する方法?

Go HTTP エンドポイント テストで Request.FormFile を設定する方法?

DDD
DDDオリジナル
2024-11-03 10:00:29561ブラウズ

How to Set Request.FormFile in Go HTTP Endpoint Testing?

Go http.Request.FormFile Enforcement のテスト

問題: エンドポイントのテスト時に Request.FormFile を設定するにはどうすればよいですか?

解決策:

FormFile を必要とするエンドポイントをテストするには、mime/multipart パッケージを使用してマルチパート フォーム データ リクエストを作成できます。以下にデモを示します。

<code class="go">import (
    "bytes"
    "io"
    "io/ioutil"
    "mime/multipart"

    "net/http"
    "net/http/httptest"
    "testing"
)

func testEndpoint(t *testing.T) {
    // Create a multipart form data writer
    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)

    // Create a form file part
    part, err := writer.CreateFormFile("y", "someimg.png")
    if err != nil {
        t.Fatalf("error creating FormFile: %v", err)
    }

    // Copy a test image into the form file part
    img, err := ioutil.ReadFile("testdata/someimg.png")
    if err != nil {
        t.Fatalf("error reading image: %v", err)
    }
    if _, err = io.Copy(part, bytes.NewReader(img)); err != nil {
        t.Fatalf("error copying image: %v", err)
    }

    // Close the form data writer
    err = writer.Close()
    if err != nil {
        t.Fatalf("error closing form data writer: %v", err)
    }

    // Create a new HTTP request
    request := httptest.NewRequest("POST", "/", body)
    request.Header.Add("Content-Type", writer.FormDataContentType())

    // Test the endpoint
    // ...
}</code>

このサンプルでは、​​mime/multipart パッケージを利用して、フォーム ファイルを使用してマルチパート フォーム データ リクエストを作成します。その後、リクエストをエンドポイントに対してテストできます。

追加情報:

  • パイプ パッケージは、マルチパート フォーム データのバッファーにも使用できます。
  • stringBody を使用して、文字列フォーム フィールドを含むマルチパート リクエストを作成できます。

以上がGo HTTP エンドポイント テストで Request.FormFile を設定する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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