如何在 MySql 中对事务提交超时进行单元测试?

Posted

技术标签:

【中文标题】如何在 MySql 中对事务提交超时进行单元测试?【英文标题】:How to unit test a transaction commit timeout in MySql? 【发布时间】:2011-07-22 07:02:18 【问题描述】:

我正在编写一个单元测试来重现在 mysqlTransaction 上调用 Commit 时达到超时的场景(使用 C# 和 MySql 连接器/网络),但我只是找不到强制这种超时的方法.我所有的测试只会在对命令执行 ExecuteNonQuery 调用时引发延迟,但一旦它命中 transacion.Commit() 就不会发生延迟。

有没有办法强制提交超时?

【问题讨论】:

我会尝试锁定一些数据,但我想这取决于您选择的 dbtype。有人确认吗? 任何关于数据锁定的示例代码将不胜感激。 模拟 Commit 方法来模拟超时而不是试图强制它会更容易和合适吗? 【参考方案1】:

如果您尝试让服务器引发异常,您是否知道自己正在编写集成测试?

如果你想要一个单元测试,你应该存根和模拟与外界的所有通信——还有你的 MySqlServer。如果您这样做,您将获得能够随意引发超时和其他异常的奖励。此外,您将消除单元测试更改/破坏数据库中数据完整性的风险。

【讨论】:

谢谢,是的,我知道这一点。您可以与我分享任何示例代码吗?我不确定如何模拟这种情况。

以上是关于如何在 MySql 中对事务提交超时进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Typescript 中对私有方法进行单元测试

如何在 java 中对这个方法进行单元测试?

如何在订阅Angular7单元测试用例中对代码进行单元测试

如何在 Gatsby 中对 GraphQL 查询进行单元测试

如何在打字稿中对模型接口进行单元测试?

你如何在 Dart 中对异常进行单元测试?