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

Nik*_*apu 4 unit-testing go

我有一个返回 2 个结果集的数据库查询,我想对执行此查询的 go 函数进行单元测试。虽然我可以像这样添加和测试行:

myMockRows:=sqlmock.NewRows([]string{"col1","col2"}).AddRow("col1val1", "col2val2")
mock.ExpectQuery("my_stored_procedure").WithArgs(arg1, arg2).WillReturnRows(myMockRows)
Run Code Online (Sandbox Code Playgroud)

我不确定如何继续在我的rows对象中创建多个结果集。我怎么做?

San*_*iva 5

我已经尝试过@Nikhil Vandanapu 的答案,但没有得到所需的输出。由于某种原因,它只花了myMockRows并且myMockRows2被忽略了。我做了一些阅读,我们可以执行以下操作以使其返回多行。

myMockRows:=sqlmock.NewRows([]string{"col1","col2"})
.AddRow("col1val1", "col2val2")
.AddRow("col1val1", "col2val2")

mock.ExpectQuery("my_stored_procedure").WillReturnRows(myMockRows)
Run Code Online (Sandbox Code Playgroud)

根据戈多克。值切片返回相同的实例以执行后续操作。

如果您想更轻松地阅读该主题,请添加此博客文章