¿Cómo se ejecuta un solo archivo de prueba / especificaciones en RSpec?
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
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 comandorake
-
-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 < 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.