у меня есть следующий файл spec_helper.rb в моем приложении Rails 3.1. Я использую Spork, чтобы быстрее загружать среду для тестирования. Все мои тесты работали до добавления Spork в микс. После добавления spork тестовая база данных не очищалась должным образом между тестовыми запусками, что отбросило некоторые из моих ожиданий.
Следуя другим инструкциям, я добавил в смесь database_cleaner с кодом, указанным ниже; однако сейчас база данных разработки очищается так же, как и тестовая база данных. Вызов ENV ["RAILS_ENV"] возвращает тест во время этого вызова.
Есть ли способ явно ограничить вызов DatabaseCleaner.clean_with (: truncation), чтобы он влиял только на тестовую базу данных?
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'shoulda/matchers/integrations/rspec'
require 'database_cleaner'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :mocha
config.formatter = 'documentation'
config.use_transactional_fixtures = true
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
FactoryGirl.reload
end
Обновление: вот мой файл database.yml
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Кроме того, я работал над основным Проблема заключается в перемещении вызова clean_with в раздел before (: each), но это значительно замедляет выполнение теста.