Rails 3.1アプリケーションに以下のspec_helper.rbファイルがあります。私はテストのために環境をより速くロードするためにSporkを使用しています。すべての私のテストは、Sporkをミックスに追加する前に動作しました。 sporkを追加した後、テストデータベースは、私の期待の一部を破棄したテストラン間で適切にクリアされていませんでした。Spork、RSpec、database_cleanerが開発データベースを破棄しています
他の命令に続いて、私は以下に記載するコードとミックスにdatabase_cleanerを追加しました。しかし、現在、開発データベースはテストデータベースと同様にクリーンアップされています。この呼び出し中にENV ["RAILS_ENV"]コールがテストを返しています。
明示的DatabaseCleaner.clean_withのためのコールを制限する方法があります:のみテスト・データベースに影響を与える(切り捨て)は?
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
更新:(各)ここでまた
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コールを移動することによって、基本的な問題を中心に取り組んできた私のdatabase.ymlファイルでセクションが、これは遅くなりますテストは大幅に実行されます。
あなたの 'database.yml'は何ですか? – Bohdan
質問を更新して情報を追加しました –
私も同じ問題に直面していますが、現時点ではこのようなことを防ぐために 'RAILS_ENV = test bundle exec rake spec'を使用しています。 – subosito