我正在尝试调试我编写的一个简单 REST 库收到的一个非常不寻常的错误。我使用标准的 net/http 包来发出 Get、Post、Put、Delete 请求,但是当我连续发出多个请求时,我的测试偶尔会失败。我的测试是这样的: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} 有时它有效,但大多数时候我会遇到 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当我发出超过 1 个请求时会发生故障。如果我注释掉除 PUT 请求之外的所有内容,则测试始终通过。一旦我包含第二个测试,例如 GET,一个或另一个失败(有时两个都通过)。任何帮助表示赞赏,谢谢!链接到源:http : //github.com/chourobin/go.firebase
3 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
我猜你的代码没有问题。问题的最可能原因是因为服务器正在关闭连接。速率限制是一个可能的原因。
您的测试不应该依赖非常脆弱且不密封的外部服务。相反,您应该考虑在本地启动测试服务器。
- 3 回答
- 0 关注
- 2918 浏览
添加回答
举报
0/150
提交
取消