我试图找到一种解决方案来编写测试和模拟 HTTP 响应。在我接受接口的函数中:
type HttpClient interface {
Do(req *http.Request) (*http.Response, error)
}
我使用 base auth 发出 http get 请求
func GetOverview(client HttpClient, overview *Overview) (*Overview, error) {
request, err := http.NewRequest("GET", fmt.Sprintf("%s:%s/api/overview", overview.Config.Url, overview.Config.Port), nil)
if (err != nil) {
log.Println(err)
}
request.SetBasicAuth(overview.Config.User, overview.Config.Password)
resp, err := client.Do(request)
我怎样才能模拟这个 HttpClient?我正在寻找模拟库,例如: https ://github.com/h2non/gock 但只有 Get 和 Post 的模拟
也许我应该以不同的方式来做。我会很感激你的建议
原文由 quentino 发布,翻译遵循 CC BY-SA 4.0 许可协议
任何具有与您在接口中具有的签名匹配的方法的结构都将实现该接口。例如,您可以创建一个结构
ClientMock
用方法
然后你可以将这个
ClientMock
结构注入你的GetOverview
func。 这 是 Go Playground 中的示例。