【问题标题】:Go sqlmock test MySQL batch insertGo sqlmock 测试 MySQL 批量插入
【发布时间】:2021-10-08 15:13:24
【问题描述】:

我正在使用 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 go go-gorm go-sqlmock


    【解决方案1】:

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

    例如

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2012-12-29
      • 1970-01-01
      相关资源
      最近更新 更多