如何发送 POST 请求 multipart/form-data 字段作为数组进行单元测试?

How to send POST request multipart/form-data field as array for unit testing?

我正在尝试对我的 Go 应用程序进行单元测试,该应用程序使用 gin(PostForm 和 PostFormArray)处理 multipart/form-data 内容类型中的表单数据,例如

x, y := c.PostForm("x"), c.PostFormArray("y")

我可以使用 Go 提供的 mime/multipart 库制作具有非数组值 (PostForm) 的表单字段

buf := new(bytes.Buffer)
w := multipart.NewWriter(buf)

x, _ := w.CreateFormField("x")
x.Write([]byte("This is x value"))

w.Close()

哪个 PostForm 处理得很好,现在我想知道是否有任何方法可以发送一个 multipart/form-data 字段作为其值的数组,如 []string{"this is y 1", "this is y 2"} 以便它与 gin 的 PostFormArray 一起工作。这可能吗?我该怎么做?任何帮助将不胜感激。提前致谢!

您可以创建多个同名字段,例如

buf := new(bytes.Buffer)
w := multipart.NewWriter(buf)

x, _ := w.CreateFormField("x")
x.Write([]byte("This is x value"))

y1, _ := w.CreateFormField("y")
y1.Write([]byte("this is y 1"))

y2, _ := w.CreateFormField("y")
y2.Write([]byte("this is y 2"))

w.Close()