ruby-on-rails - rails 4 : How to reset test database?

标签 ruby-on-rails ruby rspec

我在使用 Rails 4 并注意到我的一些 RSpec 测试失败了,因为我的一些测试重构使用了前置过滤器(大概是因为事务)。这篇文章描述了一个类似的问题:

rails test database not clearing after some runs

代替使用 DatabaseCleaner gem,是否有清除测试数据库的 rake 命令?我相信 rake db:test:prepare 在 Rails 4 中被弃用了。此外,如果在交易之前,如

`post :create, user: Fabricate.attributes_for(:user)`

是持久性的,是否有另一种重构方式来避免手动清除测试数据库的需要?

最佳答案

矫枉过正的解决方案是:

bundle exec rake db:drop RAILS_ENV=test
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test

你可以把这一切都放在一个 rake 任务中并运行它。

来自 here 的另一个解决方案是包含以下您的 spec_helper.rb 文件

config.after :all do
  ActiveRecord::Base.subclasses.each(&:delete_all)
end

免责声明:我没有对此进行测试,您应该阅读 SO post因为它可能并非在所有情况下都有效。

话虽如此,我建议使用数据库清理器 gem 来避免此类情况。

关于ruby-on-rails - rails 4 : How to reset test database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877734/

相关文章:

javascript - jQuery/Javascript 替换 'Syntax error, unrecognized expression'

ruby-on-rails - Rails 中同一个类的多个关联的最佳实践?

ruby-on-rails - 如何设置不记名 token 参数以使用 Rswag UI 测试 Rails API

ruby - 使用 Rspec codeschool 3 级挑战 5 进行测试

ruby-on-rails - 如何连接到redis-rb中的集群Azure Redis缓存?

ruby - 使用 ruby​​ 1.9.2、selenium-client 和 rspec(无rails)进行独立测试

ruby-on-rails - Rails 测试和 Mocha : How to stub specific model - conditional any_instance?

mysql - 在 rails 上用 ruby​​ 显示 unicode 文本

ruby-on-rails - 延迟作业在 Ruby on Rails 中完成后如何进行 ajax 回调?

ruby-on-rails - 在 Rails 控制台中使用连接进行 Update_all 查询