通过在测试环境(Entity.create(:name => "Entity1")
)中从Rails控制台调用RAILS_ENV=test rails console
来保存对象时,在使用mysql客户端检查时,“Entity1”对象正确地出现在测试数据库(MySQL)中。
但是当在rspec文件(entity.create(:name => "Entity1"); sleep 100
)中执行相同的操作并在睡眠功能期间检查测试数据库时,它似乎是完全空的。
为什么?保存的记录在哪里? (我当时在数据库中需要它,导致一些Sphinx测试。)
我只想补充一点,在规范中查询创建的Entity工作正常(即使它没有出现在数据库客户端中)。所以似乎Rails在这里做了一些我不太懂的奇迹。
更奇怪(至少对我而言;-))...在创建对象后执行Entity.connection.commit_db_transaction()
时,记录突然出现在数据库中(但不会再自动清除)。< / p>
答案 0 :(得分:1)
该问题的解决方案是Rails(或RSpec ......不确定)的一个名为Transactional Fixtures
的功能。在spec_helper.rb中将其关闭时
config.use_transactional_fixtures = false
创建对象后,所有记录都会突然出现在数据库中(但这可能会导致测试性能降低)。