Rspec (2.12.0) ile test edilen ve mysql için iki veritabanı bağlantısına sahip olan database_cleaner (0.9.1 f4b44bb) kullanan bir rails3.2.10 uygulamasına sahibim.
test:
...
database: my_app_test
test_my_second_connection:
...
database: my_second_connection_test
ikinci veritabanı bağlantısı kurmak model sınıfında bağlı:
Bunlar gibi database.yml şey ayarlanır. Ben test paketi işlemsel olmayan bazı maçlar bölümleri için kullanmak zorunda Ayrıca
require 'database_cleaner'
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].strategy = :transaction
end
config.before(:each) do
DatabaseCleaner.start
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].start
end
config.after(:each) do
DatabaseCleaner.clean
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].clean
end
end
:
Ben
manual of database_cleaner göre benim
Spec/spec_helper.rb içinde dosyasını aşağıdaki ayarları kullanın başardı .
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].strategy = :transaction
end
config.before(:each) do
if example.metadata[:db_truncation]
DatabaseCleaner.strategy = :truncation
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].strategy = :truncation
else
DatabaseCleaner.start
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].start
end
end
config.after(:each) do
DatabaseCleaner.clean
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].clean
if example.metadata[:db_truncation]
DatabaseCleaner.strategy = :transaction
DatabaseCleaner[:active_record,{:connection => :test_my_second_connection}].strategy = :transaction
end
end
sana bir çözüm ile gelip umut: Test vadede stratejisini değiştirmek amacıyla böyle benim gözlük db_truncate => true ve ayarları: Ben meta bilgileri eklemek zorunda Geçen yıl bu konuyla uğraşıyorduk ve hundres denemesi ve hata iterasyonları aldık ve sonunda çözüm tamamen dağınık bir hackti. – fguillen
@fguillen detaylara gider miydiniz? Ne yaptığını duyduğuma sevindim – HannesFostie
Hatırlamak için çok zor bir dağınık hack olduğunu söylediğim gibi, şimdi projenin gerçek durumunu görüyorum ve sadece bir "test_helper.rb" yöntemi ekleyerek bittiğini görüyorum 'ModelName.destroy_all' nin bir çoğu :) – fguillen