【发布时间】:2015-07-04 07:25:13
【问题描述】:
假设您有一些简单的代码,您可以在一个事务中将两行插入数据库。
如何让第二个在测试中失败以检查第一个是否回滚?
它会是一个网络服务吗,我会通过元编程来模拟它,以便让第二次调用失败。
但是对于数据库代码,我不确定。是否有某种 jdbc 驱动程序会为(比如说)每 7 次操作抛出异常?
好的,让我们更具体一点:
假设您有一些遗留代码。它的结构不是很好,但你也不想重构它(让我们先写一些测试!)。事务行为似乎有问题,您想测试您的代码。
由于代码基本上可以正常工作,因此很难使部分代码因违反约束而失败。
所以我想在我的测试中做的是模拟如果数据库发生故障(可能是因为出现死锁、不可用、磁盘已满或类似情况)或当你“拔掉插头”时会发生什么。
【问题讨论】:
-
我很确定你可以用spock做到这一点
-
是的,但是如何...找不到示例...
-
违反了要添加的第二行的某些约束。任何会导致第二次插入失败的东西都应该足够了,不是吗?
-
我不想测试transcational功能,我想测试我的代码在数据库失败或拔掉插头时的行为。
标签: java grails groovy transactions spock