如何为Golang中包含HttpClient的Handler编写单元测试?
问题:如何为调用HttpClient的Handler编写单元测试?
我有一个会调用HttpClient的Handler,不知道怎么给它写单元测试。试过几种mock HttpClient的方法,但都遇到不少问题。因为我的HandlerFunc必须是func(http.ResponseWriter, *http.Request)类型,所以不想用依赖注入。有没有人知道该怎么对它做单元测试?
func ReadFile(w http.ResponseWriter, r *http.Request) { // 从URL查询参数中获取链接 link := r.URL.Query().Get("foo") // 创建HTTP请求并调用客户端获取响应 req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, link, nil) if err != nil { log.Println(err) return } client := &http.Client{} res, err := client.Do(req) if err != nil { log.Println(err) return } log.Println(res.Body) ... }
已解决方案
我已经搞定这个问题了,方法是把http.NewRequestWithContext的逻辑抽出来放到另一个独立函数里,单独对这个新函数做单元测试——这多亏了关注点分离的原则。
内容的提问来源于stack exchange,提问作者Jessica
相关产品推荐
相关产品推荐

