如何在Go中模拟redis连接
我正在使用包进行Redis DB调用。对于单元测试,我想模拟这个调用,有没有模拟库或方法 谢谢大家的回复。我发现这个包对于redis Mock非常有用 正如@Motakjuq所说,创建这样的界面如何在Go中模拟redis连接,go,redis,mocking,Go,Redis,Mocking,我正在使用包进行Redis DB调用。对于单元测试,我想模拟这个调用,有没有模拟库或方法 谢谢大家的回复。我发现这个包对于redis Mock非常有用 正如@Motakjuq所说,创建这样的界面 type DB interface { GetData(key string) (value string, error) SetData(key string, value string) error } 并在您的代码和测试中使用实际的redis客户端(如)实现它。模拟使用比乍一看更容易
type DB interface {
GetData(key string) (value string, error)
SetData(key string, value string) error
}
并在您的代码和测试中使用实际的redis客户端(如)实现它。模拟使用比乍一看更容易。您不需要模拟Get、Set、ZAdd等每个函数。您只需启动miniredis并将其地址注入代码中使用的实际客户端(例如),方法如下:
mr := miniredis.Run()
redis.NewClient(&redis.Options{
Addr: mr.Addr(),
})
无需进一步模拟。这还使您能够无缝地使用
Pipelined()
,TxPipelined()
等,即使miniredis没有明确公开这些方法。您可以使用从redis使用的所有方法创建一个接口,并使用该接口而不是redis引用。这样,您就可以创建一个遵循接口规范的结构,并在方法中使用它