如何在Go中模拟redis连接

时间:2017-06-23 18:34:18

标签: go redis mocking

我使用https://github.com/go-redis/redis包来进行Redis数据库调用。对于单元测试我想模拟这个调用,是否有任何模拟库或方法来做?

3 个答案:

答案 0 :(得分:3)

谢谢大家的回复。我发现这个包https://github.com/alicebob/miniredis对redis模拟非常有用。

答案 1 :(得分:1)

使用miniredis进行模拟比乍看之下要容易得多。您无需模拟每个函数,例如Get,Set,ZAdd等。您只需启动miniredis并将其地址注入代码中使用的实际客户端(例如go-redis)即可:

mr := miniredis.Run()
redis.NewClient(&redis.Options{
            Addr: mr.Addr(),
        })

不需要进一步的嘲笑。即使miniredis没有显式公开这些方法,这也使您能够无缝使用Pipelined()TxPipelined()等。

答案 2 :(得分:0)

如@Motakjuq所说,创建这样的界面

type DB interface {
   GetData(key string) (value string, error)
   SetData(key string, value string) error
}

并使用代码中的实际redis客户端(例如this)和测试中的miniredis来实现。