run - Cómo forzar ejecutar todas las especificaciones de RSpec ignorando: etiqueta de enfoque
rspec subject (4)
Dada la siguiente configuración RSpec (v2.12.0):
RSpec.configure do |config|
config.treat_symbols_as_metadata_keys_with_true_values = true
config.filter_run :focus => true
config.run_all_when_everything_filtered = true
end
A veces las personas olvidan eliminar la etiqueta :focus
de las especificaciones y en un entorno de integración continua donde queremos que se ejecuten todas las especificaciones, solo se ejecutan las especificaciones con la etiqueta sobrante :focus
.
He intentado:
rspec --tag ~focus
... que ejecuta todas las especificaciones, excepto las etiquetadas con: focus
¿Hay alguna manera de forzar la ejecución de TODAS las especificaciones ignorando las etiquetas usando las opciones de línea de comandos de rspec?
Puedes eliminar las líneas:
config.filter_run :focus => true
config.run_all_when_everything_filtered = true
y dile a los usuarios que rspec --tag focus
pruebas enfocadas con rspec --tag focus
. De esta forma, el CI siempre ejecutará el conjunto de pruebas completo.
Puede considerar verificar el entorno en el bloque de configuración e incluir / excluir la configuración filter_run
adecuada.
Otro pensamiento: si está usando git, establezca un gancho de precompromiso para evitar las especificaciones con :focus
arrastra hacia la base de códigos en primer lugar.
Acabo de agregar esto a un proyecto:
config.before :focused => true do
fail "Hey dummy, don''t commit focused specs." if ENV[''FORBID_FOCUSED_SPECS'']
end
Y en el script que ejecuta nuestro servidor de integración continua:
export FORBID_FOCUSED_SPECS=true
Quería fallar automáticamente en nuestro servidor de integración continua cuando se estableció el foco. Esto fue reescrito en base al código de myronmarston para que funcione correctamente con rspec-rails 3.2.0:
config.before(:example, :focus) do
fail ''This example was committed with `:focus` and should not have been''
end if ENV[''CI'']
Pruebe: rspec --tag focus --tag ~focus