2013-02-14 5 views
6

ich diese coole Methode sah nur Datenbank Reiniger: Abschneiden für Capybara-Test: js => trueRails Rspec Capybara und DatabaseCleaner - mit Abschneiden nur auf Funktion testet

In 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 

Das Problem ist, dass jeder Feature-Test, der mit Capybara durchgeführt wird, die Reinigungsstrategie zu sein scheint: Trunkierung.

Alle anderen Spezifikationen sind jedoch in Ordnung mit: Transaktion, die wesentlich schneller ist.

Gibt es eine Möglichkeit, die Strategie nur für Capybara-Funktionsprüfungen festzulegen? So etwas wie:

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

Ich brauche nicht die akzeptierte Antwort wissen lassen, aber Ihre Frage war für mich sehr nützlich! Ich benutze den 'if JS truncation' Block und es funktioniert perfekt! Vielen Dank! –

+1

Froh, zu helfen. Die Anzahl der Stunden, die ich hier verbracht habe, war nicht lustig. – Squadrons

Antwort

2

dies sollte es tun, mich

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

Möchten Sie nach einem Testlauf nicht die Datenbank bereinigen? – rubiii

+0

Ich versuchte mit 'config.before (: suite,: type =>: feature)', aber ich hatte kein Glück, die 'DatabaseCleaner.strategy =: truncation' läuft immer: / –