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”包中声明的具体类型自然实现,然后实现了我自己的实现这些接口的模拟对象。在代码中的其他地方,我使用这些接口而不是具体的类型。我会在测试过程中注入模拟。 –

回答