在Golang中测试JSON帖子

时间:2014-08-17 21:39:28

标签: json unit-testing post go client

我正在尝试测试我创建的路由以处理POSTING JSON数据。

我想知道如何为这条路线编写测试。

我在map[string]interface{}中有POST数据,我正在创建一个新的请求:

mcPostBody := map[string]interface{}{
    "question_text": "Is this a test post for MutliQuestion?",
}
body, err = json.Marshal(mcPostBody)
req, err = http.NewRequest("POST", "/questions/", bytes.NewReader(body))

但是,t.Log(req.PostFormValue("question_text"))会记录一个空行,所以我不认为我正确设置了身体。

如何使用JSON数据创建POST请求作为Go中的有效负载?

1 个答案:

答案 0 :(得分:2)

因为这是请求的正文,所以您可以通过阅读req.Body来查看example

func main() {
    mcPostBody := map[string]interface{}{
        "question_text": "Is this a test post for MutliQuestion?",
    }
    body, _ := json.Marshal(mcPostBody)
    req, err := http.NewRequest("POST", "/questions/", bytes.NewReader(body))
    var m map[string]interface{}
    err = json.NewDecoder(req.Body).Decode(&m)
    req.Body.Close()
    fmt.Println(err, m)
}

//编辑根据elithrar的评论将代码更新为更优化的版本。