重写 Rails 中的辅助方法

Overriding helper method in Rails

我的 rails helper 中有以下行。

  config.use_transactional_fixtures = true

但是我想修改为

  config.use_transactional_fixtures = false

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

经过更多研究,您似乎需要使用 DatabaseCleaner gem https://github.com/DatabaseCleaner/database_cleaner。在您的 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

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