我正在嘗試調試我編寫的一個簡單 REST 庫收到的一個非常不尋常的錯誤。我使用標準的 net/http 包來發(fā)出 Get、Post、Put、Delete 請求,但是當我連續(xù)發(fā)出多個請求時,我的測試偶爾會失敗。我的測試是這樣的:func TestGetObject(t *testing.T) { firebaseRoot := New(firebase_url) body, err := firebaseRoot.Get("1") if err != nil { t.Errorf("Error: %s", err) } t.Logf("%q", body)} func TestPushObject(t *testing.T) { firebaseRoot := New(firebase_url) msg := Message{"testing", "1..2..3"} body, err := firebaseRoot.Push("/", msg) if err != nil { t.Errorf("Error: %s", err) } t.Logf("%q", body)}我正在提出這樣的請求:// Send HTTP Request, return datafunc (f *firebaseRoot) SendRequest(method string, path string, body io.Reader) ([]byte, error) {url := f.BuildURL(path)// create a requestreq, err := http.NewRequest(method, url, body)if err != nil { return nil, err}// send JSON to firebaseresp, err := http.DefaultClient.Do(req)if err != nil { return nil, err}if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("Bad HTTP Response: %v", resp.Status)}defer resp.Body.Close()b, err := ioutil.ReadAll(resp.Body)if err != nil { return nil, err}return b, nil} 有時它有效,但大多數(shù)時候我會遇到 1 或 2 次失?。?-- FAIL: TestGetObject (0.00 seconds)firebase_test.go:53: Error: Get https://go-firebase-test.firebaseio.com/1.json: EOFfirebase_test.go:55: ""--- FAIL: TestPushObject (0.00 seconds)firebase_test.go:63: Error: Post https://go-firebase-test.firebaseio.com/.json: EOFfirebase_test.go:65: ""FAILexit status 1FAIL github.com/chourobin/go.firebase 3.422s當我發(fā)出超過 1 個請求時會發(fā)生故障。如果我注釋掉除 PUT 請求之外的所有內(nèi)容,則測試始終通過。一旦我包含第二個測試,例如 GET,一個或另一個失?。ㄓ袝r兩個都通過)。任何幫助表示贊賞,謝謝!鏈接到源:http : //github.com/chourobin/go.firebase
3 回答

尚方寶劍之說
TA貢獻1788條經(jīng)驗 獲得超4個贊
我猜你的代碼沒有問題。問題的最可能原因是因為服務器正在關閉連接。速率限制是一個可能的原因。
您的測試不應該依賴非常脆弱且不密封的外部服務。相反,您應該考慮在本地啟動測試服務器。
- 3 回答
- 0 關注
- 2965 瀏覽
添加回答
舉報
0/150
提交
取消