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"
Puede usar failed_mode: :focus
en su archivo Guardfile, como se describe aquí: https://github.com/guard/guard-rspec#list-of-available-options
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