首页 >后端开发 >Golang >Go HTTP端点测试中如何设置Request.FormFile?

Go HTTP端点测试中如何设置Request.FormFile?

DDD
DDD原创
2024-11-03 10:00:29568浏览

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

测试 Go http.Request.FormFile 执行

问题:测试端点时如何设置 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn