将POST变量添加到Go测试http请求

时间:2015-06-22 10:52:26

标签: unit-testing testing go http-post

我正在尝试将表单变量添加到Go http请求中。

以下是我的Go测试的外观:

Content-Type: application/octet-stream

问题是表单数据永远不会传递给我需要测试的函数。

其他相关功能是:

func sample_test(t *testing.T) {
    handler := &my_listener_class{}
    reader := strings.NewReader("number=2")
    req, _ := http.NewRequest("POST", "/my_url", reader)
    w := httptest.NewRecorder()
    handler.function_to_test(w, req)
    if w.Code != http.StatusOK {
        t.Errorf("Home page didn't return %v", http.StatusOK)
    }
}

我正在使用Go版本go1.3.3 darwin / amd64。

1 个答案:

答案 0 :(得分:4)

您需要在请求中添加Content-Type标头,以便处理程序知道如何处理POST正文数据:

req, _ := http.NewRequest("POST", "/my_url", reader) //BTW check for error
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")