tutorial tests test spec run rails how español ruby rspec

ruby - tests - ¿Cómo ejecuto solo pruebas específicas en Rspec?



run spec rails (9)

A partir de RSpec 2.4 (supongo) puede anteponer una f o x a it , specify , describe y context :

fit ''run only this example'' do ... end xit ''do not run this example'' do ... end

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 y config.run_all_when_everything_filtered = true en su spec_helper.rb .

Creo que hay una manera de ejecutar solo pruebas con una etiqueta determinada. ¿Alguien sabe?



En su spec_helper.rb:

RSpec.configure do |config| config.filter_run focus: true config.run_all_when_everything_filtered = true end

y luego en sus especificaciones:

it ''can do so and so'', focus: true do # This is the only test that will run end

También puede enfocar las pruebas con ''ajuste'' o excluir con ''xit'', así:

fit ''can do so and so'' do # This is the only test that will run end


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 sobre GitHub . (Cualquier persona con un enlace mejor, por favor asesorar)

(actualizar)

RSpec ahora está magníficamente documentado aquí . Vea la sección de opción --tag para más detalles.

A partir de v2.6, este tipo de etiqueta se puede expresar aún más simplemente al incluir 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 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 .


Puede ejecutar como rspec spec/models/user_spec.rb -e "SomeContext won''t run this" .


Puede ejecutar todas las pruebas que contengan una cadena específica con la opción --example (o -e) :

rspec spec/models/user_spec.rb -e "User is admin"

Yo uso ese más.


También puede ejecutar especificaciones que tengan focus: true de manera predeterminada

spec / spec_helper.rb

RSpec.configure do |c| c.filter_run focus: true c.run_all_when_everything_filtered = true end

Entonces simplemente ejecuta

$ rspec

y solo se ejecutará la prueba enfocada

luego, cuando elimines el focus: true todas las pruebas se ejecutarán de nuevo

Más información: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters


También puede enhebrar varios números de línea junto con dos puntos:

$ rspec ./spec/models/company_spec.rb:81:82:83:103

Salida:

Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}


alternativamente 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)