http - Golang HTTP Timeout 测试,没有按预期超时
问题描述
我构建了一个小测试用例,在经过一定时间后检查我的结束超时时的代码。但这并没有按预期工作
我正在访问一个工作正常的服务器端端点,但是如果它比平时慢会发生什么,我需要在我的一端编写代码来超时,这已经实现但我需要测试我是否正确实现了它。
这是我到目前为止所拥有的
func TestTimeout(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(time.Second * 15)
}))
defer ts.Close()
client := &http.Client{
Timeout: time.Second * 10,
}
myRequest,err := createMyRequest(Somedata,SomeMoreData)
res, err := client.Do(myRequest)
if err != nil {
t.Fatal(err)
}
res.Body.Close()}
但是我的代码成功运行而没有给出超时错误(因为我没有等待 10 秒,我哪里出错了?
解决方案
正如一些评论中已经指出的那样,您需要向测试服务器的端点(使用ts.URL
)发出请求,如下所示:
myRequest, err := http.NewRequest(http.MethodPost, ts.URL, bytes.NewBuffer([]byte("test")))
if err != nil {
t.Fatal(err)
}
res, err := client.Do(myRequest)
if err != nil {
t.Fatal(err)
}
[...]
推荐阅读
- android - 操作系统如何检测屏幕尺寸?
- python - 执行“pyramid_reduce”功能后尺寸减小。怎么修?
- python - 如何将值 0 赋予缺失值
- c# - 如何使用代理打开 Tcp 连接
- mysql - 无法在 xampp 上访问 mysql
- javascript - Ajax 调用 textarea 更改,但不是每次更改
- symfony - Sylius/Symfony:使用自定义实体上传图片
- if-statement - 如果为空,则向字段提供零值并返回 sap 水晶报告中减去两个字段的条件
- java - 在 styles.xml 中声明的“android:background”上,BottomSheet 不透明
- github - 大量文件的推送错误。致命:遥控器意外挂断。错误 RPC 失败;curl 55 发送失败:连接被中止