package
0.0.0-20231013025015-df225fcd9425
Repository: https://github.com/ccmonky/pkg.git
Documentation: pkg.go.dev
# README
mock
mock工具集合。
Matcher
Matcher根据请求匹配要使用的ResponseMocker,定义如下:
// Matcher 根据请求匹配要使用的ResponseMocker
type Matcher interface {
Eigenkey(r *http.Request) (string, error)
Match(r *http.Request) (ResponseMocker, error)
}
ResponseMocker
ResponseMocker是一个Mock Response生成器接口,其定义如下:
// ResponseMocker 定义生成mock response的工具类接口
// Usage:
// 1. 三方扩展mocker需要将ID和自身实例注册到MetaOfResponseMocker资源;
// 2. 然后UnmarshalResponseMocker方法解析json得到实例应用即可,
// 注意,json内需要额外包含`"response_mocker": "ID"`字段
type ResponseMocker interface {
// ID is the type name of the ResponseMocker. It
// must be unique and properly namespaced.
ID() string
// New returns a pointer to a new, empty
// instance of the ResponseMocker's type. This
// method must not have any side-effects,
// and no other initialization should
// occur within it.
New() ResponseMocker
// IsTransparent 特化Mocker,没有Mock实现,只有一个用途:用于标识从源服务获取Mock响应
IsTransparent() bool
// Mock 根据请求得到Mock响应或错误
Mock(*http.Request) (*http.Response, error)
}
本工具库内置如下ResponseMocker实现:
- TransparentResponseMocker: 透明Mocker,即从源服务获取真实响应作为Mock,默认如果不指定则使用此Mocker
- ResponseMockerFromURL: 请求URL的获取整个响应作为Mock,通常用于Mock平台
{
"response_mocker": "ResponseMockerFromURL",
"response_from_url": "http://mock.alibaba-inc.com/ws/test/xxx?abc=123"
}
- ResponseMockerBuilder: Response Mock构造器,通过指定状态码、头和Body生成Mock响应,通常用于静态mock
{
"response_mocker": "ResponseMockerBuilder",
"status_code": 200,
"header": {
"X-Test": ["abc"],
"X-Test2": ["def", "123"]
},
"body": "this is a test"
}
{
"response_mocker": "ResponseMockerBuilder",
"status_code": 200,
"header": {
"X-Test": ["abc"],
"X-Test2": ["def", "123"]
},
"body_from_url": "http://oss.alibaba-inc.com/ws/test/xxx/body?abc=123"
}