簡體   English   中英

使用go-sqlmock在SQL查詢中獲取參數值

[英]Get argument value in SQL query with go-sqlmock

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

您可以使用工具包裝實際的驅動程序以記錄值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM