Вам нужен DatabaseCleaner, но вы можете обнаружить, что стратегия :truncation
слишком медленная, чтобы работать все время.Это действительно необходимо только для интеграционных тестов, поэтому вы можете сделать это:
# spec/spec_helper.rb
require 'database_cleaner'
config.before(:suite) do
DatabaseCleaner.clean_with :truncation
DatabaseCleaner.strategy = :transaction
end
config.before(:each) do |group|
# The strategy needs to be set before we call DatabaseCleaner.start
case group.example.metadata[:type]
when :feature
DatabaseCleaner.strategy = :truncation
else
DatabaseCleaner.strategy = :transaction
end
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
# spec/features/your_feature_spec.rb
require 'spec_helper'
describe "An integration test", :type => :feature do
end
# spec/model/your_model_spec.rb
require 'spec_helper'
describe "A unit test" do
end
Очевидно, это применимо, только если вы проводите интеграционные тесты с RSpec напрямую, а не с Cucumber.