http - 如何测试客户端代码是否正确超时 API 请求到外部服务器
问题描述
嗨,我有以下 GoLang 代码片段。
func executeAuthorisationRequest(request http.Request) (*AuthorisationResponse, error) {
var response AuthResponse
client := &http.Client{
Timeout: time.Second * 10
}
requestResult, requestError := client.Do(&request)
if requestError != nil {
log.Error(fmt.Sprintf("Some error %s", request.Error()))
}
}
请求在此处创建
func creatRequest(url string, body url.Values) (*http.Request, error){
req,reqError := http.NewRequest(http.MethodPost,url,strings.NewReader(body.Encode()))
if reqError != nil {
//Error handle
}
req.Header.Add("Content-Type","some business logic")
return request,nil
}
我正在尝试创建一个测试用例,如果服务器端 API 花费太长时间,我的客户端代码将在 10 秒后超时,我该如何模拟/创建这样的测试用例
我无权访问服务器端代码
任何指导将不胜感激,请指出我正确的方向。
解决方案
您需要 lib httptest 示例:
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,
}
res, err := client.Get(ts.URL)
if err != nil {
t.Fatal(err)
}
res.Body.Close()}
推荐阅读
- javascript - 按解决/执行时间的顺序解决承诺?
- sql - 在一列中选择 In 和 Out
- python - 基于标点符号的文本分割,尤其是在从句级别
- ubuntu - ssh 和 scp 命令的区别
- python - Python,比较数字
- windows - Windows 任务计划程序 - 非重复仅在时间窗口内运行
- javascript - 通过索引号调用字符串中的特定单词?
- javascript - 如果 h6 元素具有特定文本,如何禁用 href
- javascript - 如何在 ScriptManager.RegisterStartupScript 中包含的 javascript 函数中使用 getElementById() 调用 asp 控件
- python - 由于多列中的标签相同,桑基图具有自循环