Creo que hay una manera de ejecutar solo pruebas con una etiqueta dada. Alguien sabe?
159
No es fácil encontrar la documentación, pero puede etiquetar ejemplos con un hash. P.ej.
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
Más información en GitHub . (cualquier persona con un mejor enlace, por favor avise)
(actualizar)
RSpec ahora está magníficamente documentado aquí . Vea la sección de opciones --tag para más detalles.
A partir de la v2.6, este tipo de etiqueta se puede expresar aún más simplemente incluyendo la opción de configuración treat_symbols_as_metadata_keys_with_true_values
, que le permite hacer:
describe "Awesome feature", :awesome do
donde :awesome
se trata como si lo fuera :awesome => true
.
También vea esta respuesta sobre cómo configurar RSpec para ejecutar automáticamente pruebas 'enfocadas'. Esto funciona especialmente bien con Guard .
:focus
, lo que también evita que elementos indeseables como 'binding.pry console.log`,
, etc., ingresen a la base de código.rspec
programa :) Porque el documento Relish no lo hace.Puede ejecutar todas las pruebas que contienen una cadena específica con la opción --example (o -e) :
Lo uso más.
fuente
En su
spec_helper.rb
:y luego en sus especificaciones:
También puede enfocar las pruebas con 'ajuste' o excluir con 'xit', así:
fuente
config.filter_run_when_matching
y podría funcionar simplemente agregando:focus
al ejemploalternativamente, puede pasar el número de línea:
rspec spec/my_spec.rb:75
- el número de línea puede apuntar a una sola especificación o un bloque de contexto / descripción (ejecutando todas las especificaciones en ese bloque)fuente
También puede encadenar varios números de línea junto con dos puntos:
Salida:
fuente
A partir de RSpec 2.4 (supongo) puede anteponer una
f
ox
ait
,specify
,describe
ycontext
:http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method
Asegúrese de tener
config.filter_run focus: true
yconfig.run_all_when_everything_filtered = true
en suspec_helper.rb
.fuente
En las versiones más nuevas de RSpec, es aún más fácil configurar el soporte
fit
:Ver:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
fuente
También puede ejecutar especificaciones que tienen
focus: true
por defectospec / spec_helper.rb
Entonces simplemente corre
y solo se ejecutará una prueba enfocada
luego, cuando elimine
focus: true
todas las pruebas, vuelva a ejecutarlasMás información: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
fuente
spec/spec_helper.rb
Siempre está incluido? ¿O solo si no se dan opciones? ¿Por qué los módulos de prueba tienenrequire 'spec_helber'
, y el hecho de no tener el código anterior, elimina la posibilidad de ejecutar una sola prueba al especificar el archivo? No puedo encontrar ninguna documentación sobre esto.spec_helper.rb
Siempre se incluye si tiene--require spec_helper
en.rspec
la raíz del proyecto.Puedes correr como
rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.fuente