我目前正在使用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)
}