我正在尝试使用 go-sqlmock 进行简单的单元测试来进行选择并返回映射的 ID。下面的代码片段
s.sqlmock.ExpectBegin()
s.sqlmock.
ExpectQuery("select `id` from `project` where `id` = \\? and `archived` = \\1").
WithArgs(2).
WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(strconv.Itoa(1)))
s.sqlmock.ExpectCommit()
我要测试的实现片段是:
...
type Project struct{ Id int64 }
var project Project
tx.Raw("select id from project where id = ? and archived = 1", values["projectId"]).Scan(&project)
...
但是会出现以下错误:
我尝试了一些示例,但没有成功。我感谢大家的帮助
更新
我尝试删除s.sqlmock.ExpectBegin() and s.sqlmock.ExpectCommit()
代码并更改查询,如下所示:
s.sqlmock.
ExpectQuery("select id from project where id = ? and archived = 1").
WithArgs(2).
WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(strconv.Itoa(1)))
但是会出现以下错误:
查询:无法匹配实际的 sql:“从 id = ? 和归档 = 1 的项目中选择 id”与预期的正则表达式“从 id = ? 和归档 = 1 的项目中选择 id”