【问题标题】:Objects don't appear in test database when running specs运行规范时对象不会出现在测试数据库中
【发布时间】:2010-10-04 03:13:20
【问题描述】:

在测试环境 (RAILS_ENV=test rails console) 中通过从 Rails 控制台调用 Entity.create(:name => "Entity1") 来保存对象时,使用 mysql 客户端检查时,“Entity1”对象正确出现在测试数据库 (MySQL) 中。 但是当在 rspec 文件 (entity.create(:name => "Entity1"); sleep 100) 中执行相同的操作并在睡眠功能期间检查测试数据库时,它似乎完全是空的。 为什么?保存的记录在哪里? (当时我在数据库中需要它,原因是一些 Sphinx 测试。)

我只想补充一点,在规范中查询创建的实体可以正常工作(即使它没有出现在数据库客户端中)。所以看起来 Rails 在这里做了一些我不太了解的奇迹。

更奇怪(至少对我而言 ;-))...在创建对象后执行 Entity.connection.commit_db_transaction() 时,记录突然出现在数据库中(但不再自动清理)。

【问题讨论】:

    标签: ruby-on-rails testing ruby-on-rails-3 rspec


    【解决方案1】:

    该问题的解决方案是名为Transactional Fixtures 的Rails(或RSpec ...不确定)的一个特性。在 spec_helper.rb 中关闭它时 config.use_transactional_fixtures = false创建对象后数据库中突然出现所有记录(但这可能会导致测试性能降低)。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2015-07-03
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多