特征

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

https://github.com/h2non/gock