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