草庐IT

unit-testing - 在 GoLang 的 sqlmock 中出错

我正在为GoLang应用程序编写测试用例,我正在使用sqlmock模拟SQL查询,但在执行gotest时出现以下错误Params:[调用查询,不是预期的,下一个预期是:ExpectedBegin=>expectingdatabasetransactionBegin]对此有什么想法吗? 最佳答案 sqlmock期望有一个开始,但却得到了其他东西。在此处显示功能并进行测试以获取更多信息。 关于unit-testing-在GoLang的sqlmock中出错,我们在StackOverflow上找

mysql - 如何为 go-sqlmock 正确设置 Mock Row 和 Query

我正在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

database - Golang 测试,调用数据库 Prepare 应该会失败,但实际上并没有

我正在借助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(

unit-testing - 如何在 go-sqlmock 中添加多个结果集?

我有一个返回2个结果集的数据库查询,我想对执行此查询的go函数进行单元测试。虽然我可以像这样添加和测试行:myMockRows:=sqlmock.NewRows([]string{"col1","col2"}).AddRow("col1val1","col2val2")mock.ExpectQuery("my_stored_procedure").WithArgs(arg1,arg2).WillReturnRows(myMockRows)我不确定如何继续在我的rows对象中创建多个结果集。我该怎么做? 最佳答案 我已经尝试过@Nik

unit-testing - 如何在 go-sqlmock 中添加多个结果集?

我有一个返回2个结果集的数据库查询,我想对执行此查询的go函数进行单元测试。虽然我可以像这样添加和测试行:myMockRows:=sqlmock.NewRows([]string{"col1","col2"}).AddRow("col1val1","col2val2")mock.ExpectQuery("my_stored_procedure").WithArgs(arg1,arg2).WillReturnRows(myMockRows)我不确定如何继续在我的rows对象中创建多个结果集。我该怎么做? 最佳答案 我已经尝试过@Nik

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

我目前正在使用go-sqlmock模拟我的数据库。有什么方法可以在执行查询时获取已传递给sql驱动程序的值吗?就像这里作为参数传递的arg变量:import("database/sql")funcretrieveInfo(){//thisfunctionreturnsaninitializedinstanceoftype*sql.DBDbDriver:=initDb()query:="myquery"arg:=3rows,err:=Db_driver.Query(query,arg)//...}然后我想测试函数,我想在测试的时候知道变量arg的值。我认为这应该是可能的,因为它被传递给了

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

我目前正在使用go-sqlmock模拟我的数据库。有什么方法可以在执行查询时获取已传递给sql驱动程序的值吗?就像这里作为参数传递的arg变量:import("database/sql")funcretrieveInfo(){//thisfunctionreturnsaninitializedinstanceoftype*sql.DBDbDriver:=initDb()query:="myquery"arg:=3rows,err:=Db_driver.Query(query,arg)//...}然后我想测试函数,我想在测试的时候知道变量arg的值。我认为这应该是可能的,因为它被传递给了

go - 如何使用带有可变数量参数的 go-sqlmock WithArgs()?

我使用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 - 如何使用带有可变数量参数的 go-sqlmock WithArgs()?

我使用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 期望导致 false 失败

在尝试测试以下功能时://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
12