0

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

我在测试后使用 database_cleaner 进行清理,但由于应用程序的大量 js 使用,我的大多数测试无法使用允许我指定表以排除回滚的事务策略运行。

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

谢谢!

4

1 回答 1

0

过去我通过在我们的测试中使用事务来处理这个问题(我们目前正在使用一些本土的东西,但之前我们使用了数据库清理器)。

关键是强制一切使用相同的数据库连接。我为此采取的方法是将测试中的数据库池大小设置为 1:每个人都必须共享相同的连接,因为活动记录不会让您创建更多连接。

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

您需要在 2 个地方执行此操作

  • 当您的测试代码即将调用visitclick
  • 在每个请求之后(为此使用 Rack 中间件-您基本上可以复制ActiveRecord::ConnectionAdapters::ConnectionManagement

这适用于我们针对使用 ajax 获取中间数据等的页面编写规范,但最初开始工作可能有点棘手。不久前我更广泛地写过它

于 2014-04-23T13:18:46.480 回答