首页 > 文章列表 > 使用 golang 中 go-sqlmock 模拟 SQL 的 MAX() 函数

使用 golang 中 go-sqlmock 模拟 SQL 的 MAX() 函数

396 2024-05-05
问题内容

我希望在我的代码中模拟此查询("select max(a) from public.abc where id = %d")

我嘲笑这句话的方式是

maxofa := 1
maxofarows := sqlmock.newrows([]string{"a"}).addrow(maxofa)
suite.mock.expectquery("select max(a) from public.abc co where id = \$1").withargs(1).willreturnrows(maxofarows)

我看到了这个错误

Error:
    Query: could not match actual sql: "select max(a) from public.abc where id = 1" with
        expected regexp "select max(a) from public.abc where id = 1"

模拟 max() 这样的 sql 函数的正确方法是什么


正确答案


我的错误是我没有将模拟查询包含在 (regexp.QuoteMeta()) 中。将查询包含在 quotemeta 中确实解决了我的问题 参考:https://pkg.go.dev/regexp#QuoteMeta

不会删除这篇文章,希望它能帮助像我这样的人。