tutorial tests test spec run rails how ruby-on-rails ruby rspec guard

ruby-on-rails - tests - ruby on rails test



¿Cómo ejecutar una única prueba en guardia para rspec? (3)

Uso guard-rspec para ejecutar automáticamente las pruebas de rspec necesarias a medida que cambian mis archivos, y me encanta cómo funciona. Sin embargo, cuando estoy depurando un archivo con múltiples pruebas, a veces solo quiero volver a ejecutar una prueba individual. Por ejemplo, con rspec desde la línea de comando:

rspec spec/requests/my_favorite_spec.rb:100

Esto ejecutará solo la única especificación en la línea 100 en my_favorite_spec.rb .

Traté de ingresar lo de arriba en la consola de guardia, pero simplemente ejecuté todas las pruebas como si acabara de presionar enter. ¿Hay otra sintaxis en la consola de guardia para ejecutar una sola especificación?


Creo que puede agregar la opción "focus: true" para la especificación que desea ejecutar, algo así como

it ''does something'', focus: true do //your spec end

luego guardas el archivo y guard ejecuta solo esa prueba enfocada

Cuando hayas terminado, simplemente eliminas "focus: true"



Tiene que argumentar su spec/spec_helper.rb archivo para aceptar la instrucción :focus => true .

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

Entonces puedes usar

it ''does something'', :focus => true do //your spec end

o

describe "something", :focus => true do before do sign in visit page end it { does something } it { does something else } end

Si va a seguir ese enfoque, probablemente también quiera asegurarse de que todas las especificaciones se ejecuten si no hay :focus => true ninguna parte, utilizando el enfoque documentado :

RSpec.configure do |config| config.run_all_when_everything_filtered = true end

Puedes hacer mucho con los filtros; Es posible que desee echar un vistazo a esta página: https://relishapp.com/rspec/rspec-core/v/3-0/docs/filtering