2017-01-06 54 views
1

我在我的項目中使用gorm。我可以嘲笑這個數據庫orm進行沒有數據庫連接的測試嗎?我們有CI工具的問題,我沒有數據庫或數據庫,沒有足夠的數據進行測試。另一種方法是,我不想爲每次測試都設置一個數據庫,因爲在這些情況下,CI工具會每次創建一個容器來運行測試。Golang gorm mocking

這是測試數據庫相關方法的最佳方法嗎?我在我的解決方案中使用依賴注入,因此使用模擬數據庫很容易替換數據庫。但是gorm有很多orm相關的功能。

例如,這是一個處理程序:

func tokenIntrospectionHandler(db *gorm.DB) http.HandlerFunc { 
    return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { 
     defer req.Body.Close() 
     token := req.FormValue("token") 
     var resp Response 
     json.NewEncoder(w).Encode(resp) 
    }) 
} 
+0

您可以設置一個淨康恩在你的測試用例來具體迴應測試查詢。另外,它似乎沒有tolenIntrospectionHandler使用數據庫,所以我不知道如何指導你編寫測試用例。 –

+0

我不熟悉gorm並直接使用golang的「sql」包。但爲了測試我面向數據庫的代碼,我引入了接口,這些接口由「sql」包中聲明的具體類型自然實現,然後實現了我自己的實現這些接口的模擬對象。在代碼中的其他地方,我使用這些接口而不是具體的類型。我會在測試過程中注入模擬。 –

回答