ruby-on-rails - 运行规范时对象不会出现在测试数据库中

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

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

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

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

最佳答案

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

关于ruby-on-rails - 运行规范时对象不会出现在测试数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852629/

相关文章:

ruby-on-rails - Rails 5,未定义方法 `for' for #<Devise 在线 devise_parameter_sanitizer.for

ruby-on-rails - 如何在 Windows 上更改 Ruby-on-Rails 虚拟机 'stack size'?

ruby-on-rails - 在 Ruby 中转换只有一个对象的数组

testing - 可以发送 PUT/DELETE 方法的负载测试工具

java - Junit:判断junit是否在运行

testing - 任何可以测试 PowerBuilder 应用程序和 Web 应用程序的测试工具?

ruby-on-rails - 设备升级后无法登录

ruby-on-rails-3 - 在 Rails 3 中强制 HTML 转义

ruby-on-rails - 将参数传递给 '.js.erb' 模板

ruby-on-rails - % 在下面的代码中做了什么?