覆盖Rails中的辅助方法

时间:2015-09-24 18:55:57

标签: ruby-on-rails rspec-rails

我的rails helper中有以下行。

  config.use_transactional_fixtures = true

但我想将其修改为

  config.use_transactional_fixtures = false

但我不想为spec文件夹中的每个测试修改它。我只想将它应用于spec/requests文件夹中的所有测试 我该怎么办?

1 个答案:

答案 0 :(得分:1)

在做了一些研究之后,看起来你需要使用DatabaseCleaner gem MSDN documention。在rails帮助器中,您可以添加:

require 'database_cleaner'

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before type: :request do
    DatabaseCleaner.strategy = :truncation
  end

  config.after type: :request  do
    DatabaseCleaner.strategy = :transaction
  end

  config.before :each do
    DatabaseCleaner.start
  end

  config.after do
    DatabaseCleaner.clean
  end
end

这会设置你,以便请求规范将使用截断策略(从数据库中删除所有数据)和除请求规范之外的所有内容使用事务(从运行场景回滚所有更改)。