今天测试时候发现用httpmock包,无论如何设置都无法拦截请求。
后来查询文档 https://godoc.org/github.com/jarcoal/httpmock#RegisterResponder , 发现默认只拦截http.Client发送的请求,即
client := &http.Client{}
resp, err := client.Do(req)
而之前用的是
tr := &http.Transport{
// TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
造成无法拦截。或者可以用
func ActivateNonDefault(client *http.Client)
进行默认client的设置。
BTW,
httpmock.RegisterResponder("GET", url, ...)
其中url是参数敏感的,即/foo, /foo?bar, /foo?bar=1是不同的url
本文介绍了使用 HTTPMock 过程中遇到的问题及解决方法。重点在于如何正确配置 http.Client 以便让 HTTPMock 能够成功拦截请求。此外还讨论了 URL 在 RegisterResponder 方法中的匹配规则。
1808

被折叠的 条评论
为什么被折叠?



