You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:41:10