go sqlmock test MySQL批量插入
Go sqlmock test MySQL batch insert
我正在使用 GORM 批量插入 多行到 MySQL table 中,我想使用 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>))
我正在使用 GORM 批量插入 多行到 MySQL table 中,我想使用 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>))