我在rails应用程序上有一个ruby,其中包含与UI元素相关的重要数据库种子,因此需要进行集成测试。
我在测试后使用database_cleaner进行清理,但是由于应用程序的大量使用,我的大部分测试无法使用事务策略运行,这允许我指定表以避免回滚。
结果是我必须在每次测试之前重新播种数据库或处理脏数据库。有没有人在这种情况下有测试技巧或知道任何可能有用的工具?
谢谢!
答案 0 :(得分:0)
我过去通过使用交易进行测试来解决这个问题(我们现在正在使用一些本土的东西,但之前我们使用的是数据库清理程序。)
关键是强制一切都使用相同的数据库连接。我为此设置的路径是将test中的数据库池大小设置为1:每个人都必须共享相同的连接,因为活动记录不允许您创建更多连接。
要实现此目的,您需要小心释放不再使用的连接,方法是调用ActiveRecord::Base.clear_active_connections!
您需要执行2个地方
visit
,click
等ActiveRecord::ConnectionAdapters::ConnectionManagement
)这适用于我们针对使用ajax获取中间数据等的页面编写规范,但最初工作可能有点棘手。我更广泛地写了a while back