0

我正在使用 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*))
4

1 回答 1

0

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

例如

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

于 2021-08-05T12:03:23.580 回答