Pregunta

Quiero poder ejecutar las pruebas de un solo archivo de especificaciones, por ejemplo, para el archivo que estoy editando. rake spec ejecuta todas las especificaciones. Mi proyecto no es un proyecto de Rails, por lo que rake spec: doc no funciona.

No sé si esto importa, pero aquí está mi estructura de directorios.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb
¿Fue útil?

Solución

O puede omitir rastrillo y usar el comando 'rspec':

rspec path/to/spec/file.rb

En su caso, creo que siempre que su archivo ./spec/db_spec.rb incluya los ayudantes adecuados, debería funcionar bien.

Si está utilizando una versión anterior de rspec es:

spec path/to/spec/file.rb

Otros consejos

La invocación en bruto:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

Ahora averigüe cómo incrustar esto en su editor.

Esta pregunta es antigua, pero aparece en la parte superior de Google al buscar cómo ejecutar una sola prueba. No sé si es una adición reciente, pero para ejecutar una sola prueba de una especificación, puede hacer lo siguiente:

rspec path/to/spec:<line number>

donde -número de línea- es un número de línea que contiene parte de su prueba. Por ejemplo, si tienes una especificación como:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

Digamos que está guardado en spec / models / foo_spec.rb. Entonces correrías:

rspec spec/models/foo_spec.rb:2

y simplemente ejecutaría esa especificación. De hecho, ese número podría ser de 2 a 5.

Espero que esto ayude!

También puede utilizar el texto real del caso de prueba * e * xample con -e !

Entonces, para:

it "shows the plane arrival time"

puedes usar

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

no hay necesidad de rastrillar aquí.

de la ayuda (espec. -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

Ejemplo: espec. espec. / runner_spec.rb -l 162

Si instaló rspec como un complemento en lugar de como una gema, entonces no tendrá el ejecutable spec .

En cualquier caso, todo lo que necesitas hacer es ejecutar el archivo usando ruby. El código rspec es lo suficientemente inteligente como para ejecutar las pruebas por usted.

por ejemplo:

ruby myclass_spec.rb

http://github.com/grosser/single_test te permite hacer cosas como ...

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last

Ruby 1.9.2 y Rails 3 tienen una manera fácil de ejecutar un archivo de especificaciones:

  ruby -I spec spec/models/user_spec.rb

Explicación:

    El comando
  • ruby ?? tiende a ser más rápido que el comando rake
  • -I spec significa " incluye el directorio 'spec' cuando se buscan archivos "
  • spec / models / user_spec.rb es el archivo que queremos ejecutar.

Para ejecutar todos de sus archivos rspec: rspec

nota: debes estar en la raíz de tu proyecto

Para ejecutar un archivo rspec: rspec 'path_to / spec.rb'

nota: reemplaza 'path_to / spec.rb' con tu ruta. Las comillas son opcionales.

Para ejecutar una rspec prueba desde un archivo: rspec 'path_to / spec.rb: 7'

nota:: 7 es el número de línea donde comienza la prueba

Tenía problemas para que funcionara alguno de estos ejemplos, ¿quizás porque la publicación es antigua y los comandos han cambiado?

Después de hurgar, encontré que esto funciona:

rspec spec / models / user_spec.rb

Eso ejecutará solo el archivo y proporciona una salida útil en el terminal.

specky.vim

Alternativamente, echa un vistazo al autotest.

Ejecutar autotest en una ventana de comando significará que el archivo de especificaciones se ejecutará cada vez que lo guarde. Además, se ejecutará siempre que se ejecute el archivo que está especificando.

Por ejemplo, si tiene un archivo de especificaciones modelo llamado person_spec.rb, y un archivo modelo que está especificando llamado person.rb, entonces, cada vez que guarde cualquiera de estos archivos desde su editor, se ejecutará el archivo de especificaciones.

Digamos que estás ejecutando la prueba para crear todo. Siempre puede ejecutar ese código de especificación de tareas específico utilizando el archivo crete_spec.rb como se muestra a continuación.

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

Si desea ejecutar todas las especificaciones en un solo corto.

   rspec 

Si desea ejecutar todas las especificaciones en un controlador específico, haga clic aquí.

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

Espero que te dé más comprensión!

Aunque se escribieron muchas respuestas geniales a esta pregunta, ninguna de ellas utiliza < Rspec tags enfoque.

Uso etiquetas para ejecutar una o más especificaciones en diferentes archivos, solo aquellas relacionadas con mi tarea de desarrollo actual.

Por ejemplo, agrego la etiqueta " dev " con el valor " actual " ;:

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

luego corro

bundle exec rspec . --tag dev:current

Se pueden establecer diferentes etiquetas / valores en especificaciones individuales o grupos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top