将 POST 变量添加到 Go test http 请求

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


这是我的 Go 测试的样子:


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)

    }

}

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


另一个相关函数是:


func (listener *my_listener_class) function_to_test(writer http.ResponseWriter, request *http.Request) {

    ...

}

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


繁星淼淼
浏览 206回答 1
1回答

慕莱坞森

您需要向Content-Type请求添加标头,以便处理程序知道如何处理 POST 正文数据:req, _ := http.NewRequest("POST", "/my_url", reader) //BTW check for errorreq.Header.Set("Content-Type", "application/x-www-form-urlencoded")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go