Creo que hay una manera de ejecutar sólo las pruebas con una etiqueta determinada. Alguien sabe?

InformationsquelleAutor Nathan Long | 2011-02-21

9 Comentarios

  1. 177

    No es fácil encontrar la documentación, pero se pueden etiquetar los ejemplos con un hash. Por ejemplo.

    # 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 info en GitHub. (cualquier persona con un mejor enlace, por favor avise)

    (actualización)

    RSpec es ahora magníficamente documentado aquí. Ver el –etiqueta de opción sección para más detalles.

    Como de v2.6 este tipo de etiqueta puede ser expresado incluso 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 es tratada como si fuera :awesome => true.

    Ver también esta respuesta para saber cómo configurar RSpec para ejecutar automáticamente los centrados en las pruebas. Esto funciona especialmente bien con La guardia.

    • Así que usted no tendrá que ir a buscar, el enlace directo a zetetic la sugerencia es que aquí (para Rspec 2.12) relishapp.com/rspec/rspec-core/v/2-12/docs/command-line/…
    • Hemos añadido una especificación a nuestra suite para asegurar que el código nunca se fusionó con el foco: true todavía en control de código fuente. gist.github.com/jwg2s/7361603
    • Yo uso un git gancho para bloquear compromete con :focus, que también previene indeseables como vinculantes.haga palanca, de la consola.de registro, etc. arrastrándose en el código base.
    • Estás involucrado con rspec la documentación de los esfuerzos?
    • no, solo soy una fan 🙂 me gusta mucho lo que hicieron en el Gusto, pero por LO que sólo lanzó su propia documentación característica, por lo que podemos ver algunas de la competencia.
    • Tal vez puede que me señale en la forma de documentación que describe, en realidad, el uso y el comportamiento real de la rspec programa 🙂 Porque el Gusto doc no.

  2. 104

    Puede ejecutar todas las pruebas que contengan una determinada cadena de caracteres con –ejemplo (o -e) opción:

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

    Yo uso ese, uno de los más.

    • Esto funcionó muy bien para mis rieles 2.3.14 de la aplicación! =D (Rspec 1.3.2)
  3. 80

    En su spec_helper.rb:

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

    y, a continuación, en sus especificaciones:

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

    También puede centrarse pruebas con ‘ajuste’ o excluir con ‘salir’, así:

    fit 'can do so and so' do
        # This is the only test that will run
    end
    • Esto debe ser aceptado respuesta! 🙂
    • En rspec 3.5, es config.filter_run_when_matching y se podría trabajar sólo por la adición de :focus para el ejemplo
    • Si el foco: true’ accidentalmente cometido su CI va a pasar a pesar de no correr la mayoría de las pruebas.
  4. 65

    alternativamente, usted puede pasar el número de la línea: rspec spec/my_spec.rb:75 – el número de línea puede señalar a un único test o un contexto/describir bloque (que se ejecuta todas las especificaciones en ese bloque)

  5. 46

    También puedes cadena de múltiples números de línea junto con el cáncer de colon :

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

    De salida:

    Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
    • Asegúrese de utilizar sangrías al pegar el código
    • Esto es así que el oro! 🙇🏾♂️
  6. 4

    En las versiones más recientes de RSpec, es aún más fácil para configurar el soporte fit:

    # spec_helper.rb
    
    # PREFERRED
    RSpec.configure do |c|
      c.filter_run_when_matching :focus
    end
    
    # DEPRECATED
    RSpec.configure do |c|
      c.filter_run focus: true
      c.run_all_when_everything_filtered = true
    end

    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

  7. 3

    También puede ejecutar especificaciones que han focus: true por defecto

    spec/spec_helper.rb

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

    Luego simplemente ejecutar

    $ rspec

    y sólo se centra prueba se ejecuta

    entonces cuando se quita focus: true todas las pruebas bien ejecutar de nuevo

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

    • Es spec/spec_helper.rb siempre incluido ? O sólo si no se dan opciones? ¿Por qué los módulos de prueba han require 'spec_helber', y no tener el código de arriba a eliminar la posibilidad de la ejecución de una sola prueba especificando el archivo? No puedo encontrar ninguna documentación sobre este.
    • spec_helper.rb siempre está incluido si tiene --require spec_helper en .rspec en la raíz del proyecto.

Dejar respuesta

Please enter your comment!
Please enter your name here