为了账号安全,请及时绑定邮箱和手机立即绑定

HTTP 集成测试

HTTP 集成测试

Go
BIG阳 2021-10-25 17:17:07
我有一个用 Go 编写的小服务。我已经在用httptestet al测试它,但是,我在嘲笑数据库等等......我想做什么:使用空数据库启动我在生产中使用的同一台服务器使用 HTTP 对其运行测试获取这些测试的覆盖范围空数据库部分不是问题,因为我通过环境变量配置了所有内容。向它发出请求也不是问题,因为它只是标准的 Go 代码......问题是:我不知道如何以一种可以测量它的覆盖范围(以及它的子包)的方式启动服务器。此外,主服务器代码在一个main函数内......我什至不知道我是否可以从其他地方调用它(我尝试了标准方式,但没有使用反射之类的东西)。我是使用 Go 的新手,所以,我可能在胡说八道。
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以在测试中启动 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)


查看完整回答
反对 回复 2021-10-25
  • 1 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信