我在Rails 4上,注意到我的一些RSpec测试失败了,因为我的一些测试重构使用了before过滤器(可能是因为事务).这篇文章描述了一个类似的问题:

rails test database not clearing after some runs

是否有一个rake命令来清除测试数据库,而不是使用DatabaseCleaner gem?我认为Rails 4不推荐使用rake db:test:prepare.此外,如果在交易之前

`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:嵌套命名空间产生一个奇怪的部分路径,导致MissingTemplate错误

在has_many关系中由两个条件 Select

本地主机的上衣配置

我使用rbenv安装Ruby,但我在使用";gem";->;错误:执行gem时遇到此错误.(Errno::EACCES)权限被拒绝

Sidekiq with Rails - 控制台与 rake 任务中的不同 Sidekiq 实例

使用has_many_through关联创建记录 – Ruby on Rails

创建大哈希的 Ruby 方法

Sweet Alert 2 在 Rails 7 应用程序中无法正常工作

Rails 模型 - 以 ID 作为自定义列的自定义主键

Ruby 地理定位Ruby /插件

Rails 3 中图像路径的完整 url

上传图片 Ruby on Rails

带有 master.key 的 Rails 5.2 - Heroku 部署

Redis 引发需要 NOAUTH 身份验证错误,但没有设置密码

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

submit_tag rails 表单中的 bootstrap 图标

您如何访问设计控制器?

我应该在 Heroku Cedar 上使用薄的还是独角兽

列出关联模型的名称

Rails:弃用警告:您没有设置 config.secret_key_base