对于具有重要数据库种子的rails应用程序运行集成测试的最快方法是什么?

时间:2014-04-23 12:17:10

标签: ruby-on-rails rspec integration-testing poltergeist database-cleaner

我在rails应用程序上有一个ruby,其中包含与UI元素相关的重要数据库种子,因此需要进行集成测试。

我在测试后使用database_cleaner进行清理,但是由于应用程序的大量使用,我的大部分测试无法使用事务策略运行,这允许我指定表以避免回滚。

结果是我必须在每次测试之前重新播种数据库或处理脏数据库。有没有人在这种情况下有测试技巧或知道任何可能有用的工具?

谢谢!

1 个答案:

答案 0 :(得分:0)

我过去通过使用交易进行测试来解决这个问题(我们现在正在使用一些本土的东西,但之前我们使用的是数据库清理程序。)

关键是强制一切都使用相同的数据库连接。我为此设置的路径是将test中的数据库池大小设置为1:每个人都必须共享相同的连接,因为活动记录不允许您创建更多连接。

要实现此目的,您需要小心释放不再使用的连接,方法是调用ActiveRecord::Base.clear_active_connections!

您需要执行2个地方

  • 当您的测试代码即将调用visitclick
  • 时 每次请求后
  • (使用Rack中间件进行此操作 - 基本上可以复制ActiveRecord::ConnectionAdapters::ConnectionManagement

这适用于我们针对使用ajax获取中间数据等的页面编写规范,但最初工作可能有点棘手。我更广泛地写了a while back