簡體   English   中英

如何在Go中模擬redis連接

[英]How to mock redis connection in Go

我正在使用https://github.com/go-redis/redis包來進行Redis數據庫調用。 對於單元測試我想模擬這個調用,是否有任何模擬庫或方法來做?

謝謝大家的回復。 我發現這個包https://github.com/alicebob/minired對redis mocking非常有用。

使用miniredis進行模擬比乍一看更容易。 您不需要模擬Get,Set,ZAdd等所有函數。您可以啟動miniredis並將其地址注入到代碼中使用的實際客戶端(例如go-redis ):

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

不需要進一步的嘲弄。 這也使您能夠無縫地使用Pipelined()TxPipelined()等,即使miniredis沒有明確地公開這些方法。

正如@Motakjuq所說,創建一個這樣的界面

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

並在您的代碼中使用實際的redis客戶端( 如此 )並在測試中使用miniredis實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM