当连接位于结构中时,我应该如何在go中模拟redis连接?

wvmv3b1j  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(339)

我正在编写一个go模块,用于将一些自定义度量存储到数据存储中。数据的性质使得redis非常理想,但是在需要更改时使用接口是有意义的。我有以下代码:

type MetricsStore interface {
    Put(metric string) (string, error)
    Get(id string) (string, error)
}

然后我有一个包含redis客户机和 New() 函数,该函数创建结构的示例,并使用传递到函数中的参数示例化redis客户机。

type MetricsRedisCache struct {
    c *redis.Client
}

func New(address string, password string, db int) (MetricsRedisCache) {
    options := &redis.Options{
        Addr:               address,
        Password:           password,
        DB:                 db,
    }

    return RedisUrlStore{client: redis.NewClient(options)}
}

metricsrediscache然后实现metricsstore接口上定义的函数。问题是自从 New() 函数创建redis客户机并在 MetricsRedisCache struct,我无法轻松创建一个模拟客户机,以便在为 Put() 以及 Get() 需要 MetricsRedisCache 通过接收器。

s71maibg

s71maibg1#

创建新构造函数, NewWithClient 或者一些类似的将客户机作为参数而不是创建它。然后返回一个 MetricsRedisCache 使用给定的客户端。您可以在测试中使用此构造函数来练习 MetricsRedisCache 使用模拟redis客户端。

相关问题