gock

介绍

Gock是专为Go语言设计的一个高度灵活且易于使用的HTTP请求模拟库。它允许开发者在进行Web服务测试时,无需依赖真实的网络环境或外部API,从而简化开发流程并提高测试速度和稳定性。Gock的设计使得它可以模拟各种复杂的HTTP交互场景,包括但不限于响应状态码、头信息、延迟响应以及流式传输等。

下载

1
go get -u github.com/h2non/gock

使用

一个简单的demo

1
2
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() // 关闭模拟,保证每次测试结束都清空所有模拟请求

// 定义一个期望的HTTP GET请求及响应
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 数据也要匹配


gock
https://tsy244.github.io/2024/10/25/go/gock/
Author
August Rosenberg
Posted on
October 25, 2024
Licensed under