加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang HTTP集成测试

发布时间:2020-12-16 19:26:12 所属栏目:大数据 来源:网络整理
导读:我有一个用Go编写的小服务.我已经用httptest等测试了它,但是,我正在嘲笑数据库等… 我想做什么: 使用空数据库启动我在生产中使用的同一台服务器 使用HTTP对其进行测试 获取这些测试的覆盖范围 空数据库部分不是问题,因为我通过环境变量使所有内容都可以配置
我有一个用Go编写的小服务.我已经用httptest等测试了它,但是,我正在嘲笑数据库等…

我想做什么:

>使用空数据库启动我在生产中使用的同一台服务器
>使用HTTP对其进行测试
>获取这些测试的覆盖范围

空数据库部分不是问题,因为我通过环境变量使所有内容都可以配置.

向它发出请求也不是问题,因为它只是标准的Go代码……

问题是:我不知道如何以一种我可以测量它的覆盖范围(以及它的子包)的方式启动服务器.此外,主服务器代码在主函数内…我甚至不知道我是否可以从其他地方调用它(我尝试了标准方式,但没有反射和类似的东西).

我是一个使用Go的新人,所以,我可能会说废话.

您可以在测试中启动http服务器,并对其发出请求.

为了更方便,您可以在测试中使用httptest.Server,并将其作为主要http.Handler. httptest.Server有一些方法可以更好地控制启动和停止服务器,并提供一个URL字段来为您提供服务器的本地地址.

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter,r *http.Request) {
    fmt.Fprintln(w,"Hello,client")
}))
defer ts.Close()

res,err := http.Get(ts.URL)
if err != nil {
    log.Fatal(err)
}
greeting,err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%s",greeting)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读