我目前正在使用go-sqlmock模拟我的数据库。
有没有办法在执行查询时获得传递给sql驱动程序的值?就像这里作为参数传递的arg变量:
import (
"database/sql"
)
func retrieveInfo(){
// this function returns an initialized instance of type *sql.DB
DbDriver := initDb()
query := "my query"
arg := 3
rows, err := Db_driver.Query(query, arg)
// ...
}然后我想要测试函数,并且在测试时我想知道变量arg的值。我认为这应该是可能的,因为它被传递给go-sqlmock创建的“伪”驱动程序。我的测试逻辑如下所示:
import "github.com/DATA-DOG/go-sqlmock"
// Inits mock and overwrites the original driver
db, mock, err := sqlmock.New()
Db_driver = db
func TestRetrieveInfo(t *testing.T){
// query that matchs the one in retrieveInfo()
query := "..."
queryRows := sqlmock.NewRows([]string{"column1, column2"}).FromCSVString("value1, value2")
mock.ExpectQuery(query).WillReturnRows(queryRows)
}发布于 2018-07-11 18:08:29
您可以将真正的驱动程序与插装包装在一起,以记录值。
使用package github.com/luna-duclos/instrumentedsql。
https://stackoverflow.com/questions/43999078
复制相似问题