执行sqlmock测试MySQL批量插入



我正在使用GORM批量插入将多个行放入MySQL表中,我想使用sqlmock测试行为是否正确。我没有在网上找到任何关于用sqlmock模拟批处理插入的内容。

对于插入单行,我们将有类似的内容:

mock.ExpectExec("INSERT INTO product_viewers").WithArgs(2, 3).WillReturnResult(sqlmock.NewResult(1, 1))

但是如何将多行值传递给ExpectExec以表示批处理插入?

mock.ExpectExec("INSERT INTO product_viewers").WithArgs(???).WillReturnResult(sqlmock.NewResult(*numInsertedRows*, *numInsertedRows*))

答案是,至少对于MySQL来说,sqlmock不会在不同的行和列之间产生差异,因此您可以在.WithArgs中列出所有行的所有值,一个接一个,用逗号分隔。

mock.ExpectExec("INSERT INTO product_viewers").
WithArgs(row1col1, row1col2, row2col1, row2col2, ...).
WillReturnResult(sqlmock.NewResult(<numInsertedRows>, <numInsertedRows>))

相关内容

  • 没有找到相关文章

最新更新