特征
- 简单、富有表现力、流利的 API。
- 语义API DSL用于声明性HTTP模拟声明。
- 内置帮手,方便 JSON/XML 嘲笑。
- 支持持久和易失性 TTL 限制的模拟。
- 完全常规的表达式能够HTTP请求模拟匹配。
- 专为测试和运行时间场景而设计。
- 按方法匹配请求、URL 参数、标题和身体。
- 可扩展和可插入的 HTTP 匹配规则。
- 在模拟模式和真实网络模式之间切换的能力。
- 过滤/映射 HTTP 请求以获得准确的模拟匹配的能力。
- 支持地图和过滤器,轻松处理模拟。
- 使用界面进行宽兼容的HTTP拦截器。
http.RoundTripper
- 适用于任何兼容的客户端,如绅士。
net/http
- 网络延迟模拟(测试版)。
- 可扩展和可破解的API。
- 无依赖。
package test
import (
"github.com/nbio/st"
"gopkg.in/h2non/gock.v1"
"io/ioutil"
"net/http"
"testing"
)
func TestSimple(t *testing.T) {
defer gock.Off()
gock.New("http://foo.com").
Get("/bar").
Reply(200).
JSON(map[string]string{"foo": "bar"})
res, err := http.Get("http://foo.com/bar")
st.Expect(t, err, nil)
st.Expect(t, res.StatusCode, 200)
body, _ := ioutil.ReadAll(res.Body)
st.Expect(t, string(body)[:13], `{"foo":"bar"}`)
// Verify that we don't have pending mocks
st.Expect(t, gock.IsDone(), true)
}
https://github.com/h2non/gock