2011-11-29 12 views
7

Ho esaminato i documenti, ma le descrizioni di come funzionano più filtri sembrano essere un po 'carenti. Qualcuno ha una buona spiegazione o fonte di una buona spiegazione per il comportamento di più filtri? L'ordine in cui sono elencati è importante? Ecco un esempio di codice che potrebbe avere un comportamento diverso da quello che ci si potrebbe aspettare ...Combinazione di filtri RSpec?

Rspec.configure do |c| 
    this_version = get_version_number.to_sym 
    c.filter_run :focus=> true 
    c.filter_run_excluding :limit_to=>true, this_version => false 
    c.filter_run :new_stuff=>true 
    c.run_all_when_everything_filtered 
end 

it "is focused, but not new", :focus 
it "is is new", :new_stuff 
it "is new and focused", :new_stuff, :focus 
it "is focused and new, but limited to a different version", :focus, :limit_to, :correct_version 

Sperimentare questo, sembra anche più argomenti sul "filter_run_excluding" semplice atto linea è se hai scritto il multiplo linea volte. C'è un modo per farlo combinare effettivamente i controlli dei filtri in modo da escludere (o eseguire, suppongo) solo degli esempi che hanno entrambi i tag elencati?

+0

Se I/solo/vuoi eseguire elementi focalizzati, sarebbe meglio usare "filter_run_excluding: focus => false"? Presumo che filter_runs aggiungerà elementi indipendentemente da "filter_run: focus => true", corretto? – GlyphGryph

+0

Ho questa stessa domanda. Hai mai trovato una soluzione? – Mike

+0

Questa risposta è la seguente: http://stackoverflow.com/questions/5628880/can-i-use-multiple-exclusion-filters-in-rspec –

risposta

3

eseguire più filtri dalla riga di comando con questo:

rspec spec --tag my_tag --tag my_second_tag -- tag ~my_third_tag 

Il ~ escluderà qualsiasi spec con questi tag, quindi il suo spesso utile fare qualcosa di simile

rspec spec --tag ~long_runing 
+0

Se vero, non risponde alla domanda. – Mike