はじめに
タイトルの件で調べても解決に時間がかかってしまったので簡単にまとめてみます
解決方法
- url.Valuesに"配列をpostする際は{"1", "2"}と書く
- 構造体のタグにformを指定する
- Bindする
hoge_controller_test.go
t.Run("hogeが作成されること", func(t *testing.T) {
r := controllers.StartMainServer()
formData := url.Values{
"form1": {"1", "2"},
}
req, _ := http.NewRequest("POST", "/hoge_new", strings.NewReader(formData.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
test := httptest.NewRecorder()
r.ServeHTTP(test, req)
assert.Equal(t, 200, test.Code)
})
hoge_controller.go
type Form struct {
Form1 []string `form:"form1"`
}
func hoge_new (c *gin.Context) {
var f Form
c.Bind(&f)
fmt.Println(f.Form1)
c.JSON(200, "OK")
}
以下のように配列で受け取ることが確認できました
おわりに
url.Valuesに配列を指定する書き方が分からずに詰まってしまいました
参考