我正在为GoLang应用程序编写测试用例,我正在使用sqlmock模拟SQL查询,但在执行gotest时出现以下错误Params:[调用查询,不是预期的,下一个预期是:ExpectedBegin=>expectingdatabasetransactionBegin]对此有什么想法吗? 最佳答案 sqlmock期望有一个开始,但却得到了其他东西。在此处显示功能并进行测试以获取更多信息。 关于unit-testing-在GoLang的sqlmock中出错,我们在StackOverflow上找
我正在golang中设置测试。我使用go-sqlmock来测试mysql连接。但是sqlmock.NewRows和mock.ExpectQuery不能正常工作并出现错误。我想知道如何解决这个错误。serverside:golangdb:mysqlwebframework:gindao.gofuncGetSingleArticleDao(c*gin.Context,db*sql.DB)(util.Article,*sql.Rows){id:=c.Params.ByName("id")article:=util.Article{}errArticle:=db.QueryRow("SELEC
我正在借助gosqlmock编写一些测试代码。以下代码不验证准备好的语句是否具有正确的查询。主要代码是这样的://main.gopackagemainimport"database/sql"functestFunction(db*sql.DB){db.Prepare("SELECT")}funcmain(){}和测试代码://main_test.gopackagemainimport("testing""github.com/stretchr/testify/assert"sqlmock"gopkg.in/DATA-DOG/go-sqlmock.v1")funcTestPrepare(
我有一个返回2个结果集的数据库查询,我想对执行此查询的go函数进行单元测试。虽然我可以像这样添加和测试行:myMockRows:=sqlmock.NewRows([]string{"col1","col2"}).AddRow("col1val1","col2val2")mock.ExpectQuery("my_stored_procedure").WithArgs(arg1,arg2).WillReturnRows(myMockRows)我不确定如何继续在我的rows对象中创建多个结果集。我该怎么做? 最佳答案 我已经尝试过@Nik
我有一个返回2个结果集的数据库查询,我想对执行此查询的go函数进行单元测试。虽然我可以像这样添加和测试行:myMockRows:=sqlmock.NewRows([]string{"col1","col2"}).AddRow("col1val1","col2val2")mock.ExpectQuery("my_stored_procedure").WithArgs(arg1,arg2).WillReturnRows(myMockRows)我不确定如何继续在我的rows对象中创建多个结果集。我该怎么做? 最佳答案 我已经尝试过@Nik
我目前正在使用go-sqlmock模拟我的数据库。有什么方法可以在执行查询时获取已传递给sql驱动程序的值吗?就像这里作为参数传递的arg变量:import("database/sql")funcretrieveInfo(){//thisfunctionreturnsaninitializedinstanceoftype*sql.DBDbDriver:=initDb()query:="myquery"arg:=3rows,err:=Db_driver.Query(query,arg)//...}然后我想测试函数,我想在测试的时候知道变量arg的值。我认为这应该是可能的,因为它被传递给了
我目前正在使用go-sqlmock模拟我的数据库。有什么方法可以在执行查询时获取已传递给sql驱动程序的值吗?就像这里作为参数传递的arg变量:import("database/sql")funcretrieveInfo(){//thisfunctionreturnsaninitializedinstanceoftype*sql.DBDbDriver:=initDb()query:="myquery"arg:=3rows,err:=Db_driver.Query(query,arg)//...}然后我想测试函数,我想在测试的时候知道变量arg的值。我认为这应该是可能的,因为它被传递给了
我使用go-sqlmock(https://godoc.org/github.com/DATA-DOG/go-sqlmock)来测试接收可变数量参数的函数(为了简单起见,我简化了函数并删除了大部分代码):funcgetHits(db*sql.DB,actions...string)(hits[]Hit,errerror){//...query:=`select*fromtablewhereactionin(?,?)`rows,err:=db.Query(query,actions)//...}测试看起来像这样://rows:=...actions:=[]string{"click","
我使用go-sqlmock(https://godoc.org/github.com/DATA-DOG/go-sqlmock)来测试接收可变数量参数的函数(为了简单起见,我简化了函数并删除了大部分代码):funcgetHits(db*sql.DB,actions...string)(hits[]Hit,errerror){//...query:=`select*fromtablewhereactionin(?,?)`rows,err:=db.Query(query,actions)//...}测试看起来像这样://rows:=...actions:=[]string{"click","
在尝试测试以下功能时://TransactionBeginsasqltransaction.funcTransaction(db*sql.DB,txFuncfunc(*sql.Tx)*errors.ErrorSt)(retErrSt*errors.ErrorSt){retErrSt=niltx,retErrSt:=beginTrans(db)ifretErrSt!=nil{returnretErrSt}deferfunc(){ifp:=recover();p!=nil{tx.Rollback()panic(p)//re-throwpanicafterRollback}elseifret