redis client支持设置mock模式

This commit is contained in:
2025-04-21 16:42:28 +08:00
parent ac633385b7
commit 5d1ebcf505
4 changed files with 28 additions and 2 deletions

View File

@ -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,