介绍
Gock是专为Go语言设计的一个高度灵活且易于使用的HTTP请求模拟库。它允许开发者在进行Web服务测试时,无需依赖真实的网络环境或外部API,从而简化开发流程并提高测试速度和稳定性。Gock的设计使得它可以模拟各种复杂的HTTP交互场景,包括但不限于响应状态码、头信息、延迟响应以及流式传输等。
下载
| 1
 | go get -u github.com/h2non/gock
 | 
使用
一个简单的demo
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 | package main
 import (
 "testing"
 "net/http"
 "github.com/h2non/gock"
 )
 
 func TestMyService(t *testing.T) {
 defer gock.Off()
 
 
 gock.New("http://api.example.com").
 Get("/users").
 Reply(200).
 JSON(map[string]string{"username": "testuser", "email": "test@example.com"})
 
 resp, err := http.Get("http://api.example.com/users")
 if err != nil {
 t.Fatal(err)
 }
 
 
 if resp.StatusCode != 200 {
 t.Errorf("Unexpected status code. Expected %d, got %d", 200, resp.StatusCode)
 }
 
 
 }
 
 | 
解释:
使用gock 先预定了一个期望的结果,状态码应该是200,json 数据也要匹配