【发布时间】:2016-06-07 16:12:38
【问题描述】:
我有一个相当复杂的服务,它创建并保存了很多域实例,并且由于逻辑原因,我需要在不同的时间创建不同的实例,并在中间检查某些条件,这不仅仅是每个instance 是有效的,但是例如我需要检查文件系统中是否存在某些文件等。
我正在测试不正确的情况,服务会抛出异常,我需要测试如果抛出异常,没有实例持续存在。
一个特定的测试用例失败了,即使抛出了预期的异常,域实例也会保存到数据库中。然后我读到因为集成测试本身是事务性的,所以回滚确实发生在测试结束时,而不是在使用服务之后,所以我可以检查 spock 测试用例的“then”部分的条件。
所以如果回滚发生在我可以测试之后,我就无法测试了:(
然后我读到使集成测试不是事务可能会有所帮助,所以我补充说:
静态事务 = 假
此后,我所有的其他测试都开始失败!
我的问题是:在抛出异常时测试应该回滚的服务的正确方法是什么?我只需要验证发生异常后,数据库没有任何更改(因为这是一个医疗保健应用程序,数据一致性是关键)
仅供参考:
谢谢!
【问题讨论】:
标签: grails