2011-11-29 20 views
7

He estado revisando los documentos, pero las descripciones de cómo funcionan varios filtros parecen ser un poco deficientes. ¿Alguien tiene una buena explicación o fuente de una buena explicación para el comportamiento de múltiples filtros? ¿El orden en que se enumeran es importante? Aquí está un ejemplo de código que podría tener un comportamiento distinto de lo que se podría esperar ...¿Combinación de filtros 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 

Experimentando con esto, también parece que varios argumentos sobre la "filter_run_excluding" línea simple acto es si escribió la línea múltiple veces. ¿Hay alguna forma de conseguir que combine realmente las comprobaciones de filtro para que excluya (o ejecute, supongo) solo los ejemplos que tienen ambas etiquetas en la lista?

+0

Si E/solamente/¿Desea ejecutar elementos enfocados? ¿Sería mejor utilizar "filter_run_exclusion: focus => false"? Supongo que filter_runs adicionales agregarán elementos independientemente del "filter_run: focus => true", ¿correcto? – GlyphGryph

+0

Tengo la misma pregunta. ¿Encontraste alguna solución? – Mike

+0

Esto se parece a la respuesta: http://stackoverflow.com/questions/5628880/can-i-use-multiple-exclusion-filters-in-rspec –

Respuesta

3

ejecutar varios filtros de la línea de comandos con este:

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

El ~ excluirá ninguna especificación con esas etiquetas, por lo que su frecuencia útil para hacer algo como

rspec spec --tag ~long_runing 
+0

Si bien es cierto, no responde la pregunta. – Mike