2014-10-12 77 views
0

我有下面的測試HTTP請求的代碼進行測試:圍棋 - 如何使用http.NewRequest

func TestAuthenticate(t *testing.T) { 
    api := &ApiResource{} 
    ws := new(restful.WebService) 
    ws.Consumes(restful.MIME_JSON, restful.MIME_XML) 
    ws.Produces(restful.MIME_JSON, restful.MIME_JSON) 
    ws.Route(ws.POST("/login").To(api.Authenticate)) 
    restful.Add(ws) 

    bodyReader := strings.NewReader("<request><Username>42</Username><Password>adasddsa</Password><Channel>M</Channel></request>") 

    httpRequest, _ := http.NewRequest("POST", "/login", bodyReader) 
// httpRequest.Header.Set("Content-Type", restful.MIME_JSON) 
    httpRequest.Header.Set("Content-Type", restful.MIME_XML) 
    httpWriter := httptest.NewRecorder() 

    restful.DefaultContainer.ServeHTTP(httpWriter, httpRequest) 
} 

我試圖用JSON作爲具有相同NewReader一個字符串,並還試圖用結構與json.Marshal

它們都不起作用。

有沒有一種方法,我可以代碼bodyReader有效的第三個參數爲http.NewRequest

作爲用於JSON NewReader輸入類似的要求是:

bodyReader := strings.NewReader("{'Username': '12124', 'Password': 'testinasg', 'Channel': 'M'}") 

STRUCT字段是: Username, Password, Channel

+0

strings.NewReader()是創建請求正文閱讀器的有效方法。究竟是什麼失敗?它是編譯錯誤還是運行時其他錯誤。如果是運行時錯誤,它從哪裏來?發佈的代碼中沒有錯誤測試。 – 2014-10-12 01:29:40

+0

這是不正確解碼與JSON和結構 – 2014-10-12 01:36:02

+0

@SimonFox JSON是我的問題的字符串。它不能正確解碼,因爲我在具有'Useranem','Password'和'Channel'的hello'結構體上使用'ReadEntity'在'request.ReadEntity'後面,當我做'fmt.Println(hello.Username) 「我什麼也得不到,但得到一個恐慌的錯誤。這隻會發生在JSON而非XML – 2014-10-12 03:23:43

回答

1

的JSON是無效的。 JSON使用"來引用字符串,而不是'

使用此行代碼來創建請求主體:

bodyReader := strings.NewReader(`{"Username": "12124", "Password": "testinasg", "Channel": "M"}`) 

我用了一個raw string literal避免在JSON文本引述"