Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ExpectKey ¶
type ExpectKey = string
ExpectKey custom key In the case of mysql: `json` `string` `func` choose excepted response
type ExpectParam ¶
type ExpectParam interface {
// WithPath 路径类
// interface : mock client name
// http: url "http://mock.com/get"
WithPath(path string) ExpectParam
// WithMethod 动作/方法类
// http : POST GET DELETE等
// mysql: "SELECT (.+) FROM DEMO" "INSERT INTO$"等
WithMethod(method string) ExpectParam
// WithArgs 入参
WithArgs(args ...interface{}) ExpectParam
// WithArgsByIndex 下标入参
// NOTE: 目前针对interface封装,不覆盖的会走Any(忽略匹配)逻辑
WithArgsByIndex(index int, value interface{}) ExpectParam
// WithHttpResponseFunc 设置Http response
// http 设置可变response用
WithHttpResponseFunc(f func(req *http.Request) (*http.Response, error)) ExpectParam
// WithReturns 设置预期返回值
// http: 限制1个,默认匹配interface类型,匹配string时,response 返回为string,其他情况response使用json
// mysql: 支持 struct/slice/array 默认使用json tag,如果mockit设置tag为其他,如"mock",可参见单元测试
// 其他: 全量
WithReturns(m ...interface{}) ExpectParam
// WithKeyValReturn 设置单个预期返回值
// mysql:如查询计数时,可使用 "COUNT", 20 => 代表返回20,注意这个`COUNT`必须和查询语句的大小写相同
// http: 支持 string json 2种key,区分response返回的类型
WithKeyValReturn(key ExpectKey, val interface{}) ExpectParam
}
ExpectParam mockit ioc/控制反转 参数
func NewExpectParam ¶
func NewExpectParam() ExpectParam
type MockClientInitFunc ¶
type MockClientInitFunc func(ctrl *gomock.Controller) interface{}
type Mockit ¶
type Mockit interface {
// GetInterfaceClient 获取interface的mockClient,获取后 m.(*MockXX)获得实例
GetInterfaceClient(name string) interface{}
// MysqlExecExpect mysql 增删改使用
MysqlExecExpect(ep ExpectParam, tb testing.TB)
// MysqlQueryExpect mysql 查询使用
MysqlQueryExpect(ep ExpectParam, tb testing.TB)
// InterfaceExpect interface mockgen 生成使用
// NOTE: grpc 推荐mockgen生成后使用此方案作为mock代理
InterfaceExpect(ep ExpectParam, tb testing.TB)
// HttpExpect http client 拦截使用
// NOTE: ES也是此方案
HttpExpect(ep ExpectParam, tb testing.TB, httpStatus ...int)
// BeforeTest NOTE:清洁单元测试环境
BeforeTest()
// AfterTest NOTE:配合BeforeTest
AfterTest()
// SqlDB 获取sql conn
SqlDB() *sql.DB
// InterceptHttpClient 拦截http client
InterceptHttpClient(client *http.Client)
// RedisAddr 获取伪redis server addr
RedisAddr() string
}
Mockit mock工具集,集成如下
- http (elasticSearch)
- MYSQL (支持多类sql,目前支持了mysql,如需添加请联系)
- Redis
- interface (GRPC) NOTE: 需结合https://github.com/golang/mock使用,生成后需要将实例化返回值改为interface{},如: NewMockXXX(ctrl *gomock.Controller) interface{}
func New ¶
func New(fs ...MockClientInitFunc) (Mockit, error)
New 创建mock工具包 @fs: 使用mockgen生成的interface mock client NOTE: 一般默认生成的是 NewMockDemoInterface(ctrl *gomock.Controller) *MockDemoInterface TODO: 需要修改成 NewMockDemoInterface(ctrl *gomock.Controller) interface{}后传入,方可拦截代理
func NewWithMockTag ¶
func NewWithMockTag(tag string, fs ...MockClientInitFunc) (Mockit, error)
NewWithMockTag 创建mock工具包 @ormTag: mysql 映射的实体tag,如下可使用"mock"作为tag数据库映射, NOTE: gorm中可以带primary key;varchar等,请自定义tag使用
type Kit struct {
Name string "mock:"name"
}
@fs: 使用mockgen生成的interface mock client NOTE: 一般默认生成的是 NewMockDemoInterface(ctrl *gomock.Controller) *MockDemoInterface TODO: 需要修改成 NewMockDemoInterface(ctrl *gomock.Controller) interface{}后传入,方可拦截代理