我想用the rollback pattern来测试我的服务。这些实际上是管理事务并处理由Winform UI调用的所有存储库访问的逻辑服务。存储库使用NHibernate进行数据库操作。如何在NHibernate事务中使用回滚模式?
鉴于NHibernate doesn't support nested transactions,它不能在测试设置中开始事务并在拆卸中回滚。我在中间执行的事务没有回滚。
我发现的唯一方法是更改服务类,以便我可以注入在测试设置中创建的ITransaction
。但是这种方法将交易作为副作用暴露给用户界面,并且感觉像改变我的实现仅仅用于测试。
有没有更好的方法来实现这一目标?任何建议或指示,欢迎。
也许我没有正确理解,但是在使用NHibernate为您的测试提供的内存数据库中存在一个特殊的问题?无论如何,当您的数据库在测试脚本末尾过期时,您无需担心回滚测试。 – tmesser 2011-05-16 13:55:34
感谢您的回答。这更像是一个集成测试,我想测试一下Sybase Anywhere数据库,它有一些怪癖。在单元测试中,我使用内存数据库。 – henginy 2011-05-16 14:03:31
哦,gotcha。在我上一份工作中,我做了这样的事情 - 这可能不适合你的情况,但至少是某种事情。片刻,当我打字时。 – tmesser 2011-05-16 14:06:58