为什么我的测试数据库在运行rails test之前和之后都是空的?

时间:2012-01-05 20:44:11

标签: ruby-on-rails database unit-testing

虽然大多数人希望他们的数据库在单元/功能测试的运行之间是空的,但是我正在调试一个问题并且发现它很不方便,而且我的测试数据库在运行测试之前和之后都是空的而且相当令人惊讶。即使我在设置和拆卸中放置了一些东西来打印特定表的大小,它在设置时始终为0,有时在拆卸时大于0。

这对我有什么用?我没有固定装置(我已经在test_helper中注释掉了默认的“fixtures:all”)并且我正在使用扩展ActiveSupport :: TestCase的简单单元/功能测试(没有RSpec或类似的东西)。自生成rails项目以来,我没有添加太多/任何自定义配置/设置。

我正在运行Rails 3.0.9和Ruby 1.8.7。

欢迎所有想法!

2 个答案:

答案 0 :(得分:3)

您可以将use_transactional_fixtures设置为false

来停用此行为
class MyTest < ActiveSupport::TestCase
  self.use_transactional_fixtures = false
end 

答案 1 :(得分:0)

单元测试需要具有已知的新状态,这就是数据库被清除的原因。

防止测试db被擦除非常容易w / RSpec。不确定如何在Rails的内置Test :: Unit内容中执行此操作,但如果仅用于快速调试目的,您可能需要考虑的一件事就是使用记录器并拖尾测试日志:

Rails.logger.info "\n\nThe value of foo is #{foo}\n\n"

这将落入test.log并在每一侧放置几个换行符,以便您在其中所有其他内容中轻松查看。

希望有所帮助。