redis client支持设置mock模式
This commit is contained in:
19
client.go
19
client.go
@ -10,6 +10,7 @@ package redis
|
||||
import (
|
||||
"context"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"github.com/go-redis/redismock/v9"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@ -40,6 +41,9 @@ type OwnClient struct {
|
||||
whiteCommandTable map[string]bool
|
||||
logger *zap.Logger
|
||||
extraLogFieldList []string
|
||||
mockMode bool
|
||||
mockInstance redismock.ClientMock
|
||||
mockClient *redisClient.Client
|
||||
}
|
||||
|
||||
func (o *OwnClient) isAllowCommand(command string) bool {
|
||||
@ -221,12 +225,27 @@ func (o *OwnClient) isWriteCommand(command consts.RedisCmd) bool {
|
||||
}).Has(consts.RedisCmd(strings.ToUpper(command.String()))) >= 0
|
||||
}
|
||||
|
||||
// SetMockMode 启用mock, 非单元测试不要使用!!!!!!!!
|
||||
func (o *OwnClient) SetMockMode() {
|
||||
o.mockMode = true
|
||||
o.mockClient, o.mockInstance = redismock.NewClientMock()
|
||||
}
|
||||
|
||||
// GetMockInstance 获取mock实例
|
||||
func (o *OwnClient) GetMockInstance() redismock.ClientMock {
|
||||
return o.mockInstance
|
||||
}
|
||||
|
||||
// newClient 获取客户端连接
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:12 2024/10/8
|
||||
func (o *OwnClient) newClient(instanceConfig *define.Options) *redisClient.Client {
|
||||
if o.mockMode {
|
||||
// mock模式下, 直接返回mock实例
|
||||
return o.mockClient
|
||||
}
|
||||
return redisClient.NewClient(&redisClient.Options{
|
||||
DB: instanceConfig.DB,
|
||||
Addr: instanceConfig.Addr,
|
||||
|
Reference in New Issue
Block a user