2011-11-29 7 views
7

Przeglądałem dokumenty, ale opisy działania wielu filtrów wydają się być nieco słabsze. Czy ktoś ma dobre wyjaśnienie lub źródło dobrego wyjaśnienia zachowania wielu filtrów? Czy kolejność, w jakiej są wymienione, ma znaczenie? Oto przykład kodu, który może mieć zachowanie inne niż to, co można by oczekiwać ...Łączenie filtrów 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 

Eksperymentowanie z tym, wydaje się również, jak wiele argumentów na „linii prostej” filter_run_excluding ustawy jest, jeśli napisał wielowierszowego czasy. Czy istnieje sposób, aby go faktycznie połączyć kontrole filtrów tak, że wyklucza (lub działa, jak przypuszczam) tylko przykłady, które mają oba znaczniki wymienione?

+0

Gdybym/tylko/chcesz uruchomić skupione elementy, czy lepiej byłoby użyć "filter_run_excluding: focus => false"? Zakładam, że dodatkowe filter_runs doda elementy bez względu na "filter_run: focus => true", prawda? – GlyphGryph

+0

Mam to samo pytanie. Czy kiedykolwiek znalazłeś rozwiązanie? – Mike

+0

To jest jak odpowiedź: http://stackoverflow.com/questions/5628880/can-i-use-multiple-exclusion-filters-in-rspec –

Odpowiedz

3

uruchamianie wielu filtrów z linii poleceń z tym:

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

~ wyklucza jakąkolwiek specyfikację z tymi tagami, więc jest często przydatna coś zrobić jak

rspec spec --tag ~long_runing 
+0

Wprawdzie nie odpowiada na pytanie. – Mike