使用go-sqlmock在SQL查询中获取参数值

时间:2017-05-16 10:35:03

标签: go mocking

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

1 个答案:

答案 0 :(得分:0)

您可以使用工具包装真实的驱动程序以记录值。

使用软件包github.com/luna-duclos/instrumentedsql