Go Http.Request.FormFile テストでファイルのアップロードをシミュレートする方法
Nov 03, 2024 am 08:21 AMTesting Go Http.Request.FormFile
マルチパート フォーム データを想定するエンドポイントをテストするには、ファイルのアップロードをシミュレートする必要があります。これは、httptest ライブラリを使用してフォーム ファイルでポスト リクエストを生成することで実現できます。
完全な FormFile 構造体をモックする代わりに、mime/multipart パッケージを利用してフォーム ファイルを作成できます。 CreateFormFile 関数は、指定されたフィールド名とファイル名を持つマルチパート フィールド ヘッダーを生成します。
CreateFormFile によって作成された io.Writer を httptest.NewRequest に渡すことで、フォーム ファイルを使用したポスト リクエストをシミュレートできます。
これを実装する方法の例を次に示します。
<code class="go">func TestUploadImage(t *testing.T) { // Set up an io.Pipe to avoid buffering pr, pw := io.Pipe() writer := multipart.NewWriter(pw) go func() { defer writer.Close() part, err := writer.CreateFormFile("fileupload", "someimg.png") if err != nil { t.Error(err) } img := createImage() err = png.Encode(part, img) if err != nil { t.Error(err) } }() request := httptest.NewRequest("POST", "/", pr) request.Header.Add("Content-Type", writer.FormDataContentType()) response := httptest.NewRecorder() handler := UploadFileHandler() handler.ServeHTTP(response, request) if response.Code != 200 { t.Errorf("Expected %s, received %d", 200, response.Code) } if _, err := os.Stat("./uploads/someimg.png"); os.IsNotExist(err) { t.Error("Expected file ./uploads/someimg.png' to exist") } }</code>
この関数は、イメージ パッケージを使用してイメージを動的に作成し、png.Encode を使用してマルチパート ライターに直接書き込みます。これは、実際のファイル I/O を必要とせずに、画像ファイルのアップロードをシミュレートします。
以上がGo Http.Request.FormFile テストでファイルのアップロードをシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?
