目录
http.Request/http.ResponseWriter
前言
Mock是一个做自动化测试永远绕不过去的话题。本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法。
可能有的小伙伴不太了解mock在实际自动化测试过程中的意义,在我的另外一篇博客中有比较详细的描述,在本文中我们可以简单理解为它可以解决测试依赖。下面我们一起来学习它。
http包的HandleFunc函数
我们在前面的文章中介绍过怎么发送各种http请求,但是没有介绍过怎么使用golang启动一个http的服务。我们首先来看看怎么使用golang建立一个服务。
使用golang启动一个http服务非常简单,把下面的代码保存在httpServerDemo.go中,执行命令go run httpServerDemo.go就完成建立了一个监听在http://127.0.0.1:9090/上的服务。
package main
import (
"fmt"
"log"
"net/http"
)
func httpServerDemo(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, `{"name":"Bingo","age":"18"}`)
}
func main() {
http.HandleFunc("/", httpServerDemo)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
访问http://127.0.0.1:9090/可以看到下面的内容。

介绍如何建立一个服务,是因为我们要学习建立服务需要使用到的两个结构体http.Request/http.ResponseWriter。下面我们一起来看看他们的具体内容。
http.Request/http.ResponseWriter
type Request struct {
Method string
URL *url.URL
Proto string
ProtoMajor int
ProtoMinor int
Header Header
Body io.ReadCloser
GetBody func() (io.ReadCloser, error)
ContentLength int64
TransferEncoding []string
Close bool
...
type ResponseWriter interface {
Header() Header
Write([]byte) (int, error)
WriteHeader(int)
}
</

文章介绍了在Go中使用net/http/httptest包进行HTTP请求Mock测试的方法,通过创建Mock服务器模拟HTTP服务,避免了对外部服务的依赖。示例代码展示了如何定义被测接口,编写测试用例,并控制返回状态码和内容,以确保在服务不可用时也能进行有效测试。
最低0.47元/天 解锁文章
926

被折叠的 条评论
为什么被折叠?



