2013-02-14 27 views
6

Tôi thấy phương pháp này mát mẻ cho chỉ sử dụng chất tẩy rửa Cơ sở dữ liệu: cắt ngắn cho thử nghiệm Capybara sử dụng: js => trueRails RSpec Capybara và DatabaseCleaner - sử dụng cắt ngắn chỉ về tính năng kiểm tra

Trong spec_helper.rb:

config.before(:each) do 
    DatabaseCleaner.strategy = if example.metadata[:js] 
    :truncation 
    else 
    :transaction 
    end 
    DatabaseCleaner.start 
end 

config.after(:each) do 
    DatabaseCleaner.clean 
end 

Vấn đề là bất kỳ thử nghiệm tính năng nào được thực hiện với capybara có vẻ như cần chiến lược làm sạch: cắt ngắn.

Tất cả các thông số kỹ thuật khác, tuy nhiên, tốt với: giao dịch, nhanh hơn đáng kể.

Có cách nào chỉ định chiến lược chỉ cho các thử nghiệm tính năng capybara không? Cái gì đó như:

DataCleaner.strategy(:truncation) if :type => :feature 
+1

Tôi không cần câu trả lời chấp nhận nhưng câu hỏi của bạn rất hữu ích cho tôi! Tôi đang sử dụng khối 'nếu JS sử dụng cắt ngắn' và nó hoạt động hoàn hảo! Cảm ơn! –

+1

Rất vui được giúp đỡ. Số giờ tôi bỏ ra xung quanh với điều này không vui. – Squadrons

Trả lời

2

này nên làm điều đó, cho tôi biết

config.after(:all, :type => :feature) do 
    DatabaseCleaner.clean_with :truncation 
end 
+0

bạn sẽ không muốn làm sạch cơ sở dữ liệu sau khi chạy thử nghiệm auch? – rubiii

+0

Tôi đã thử với 'config.before (: suite,: type =>: feature)', nhưng tôi không có may mắn, 'DatabaseCleaner.strategy =: truncation' luôn chạy: / –

Các vấn đề liên quan