¿Cómo se ejecuta un único archivo de prueba / especificación en RSpec?
Quiero poder ejecutar las pruebas de un solo archivo spec, por ejemplo, para el archivo que estoy editando. rake spec
ejecuta todas las especificaciones. Mi proyecto no es un proyecto Rails, así 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
14 answers
O puedes saltarte el rake y usar el comando 'rspec':
rspec path/to/spec/file.rb
En su caso creo que siempre y cuando su./spec / db_spec.el archivo rb incluye los ayudantes apropiados, debería funcionar bien.
Si está utilizando una versión anterior de rspec es:
spec path/to/spec/file.rb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-05 04:13:16
La invocación cruda:
rake spec SPEC=spec/controllers/sessions_controller_spec.rb \ SPEC_OPTS="-e \"should log in with cookie\""
Ahora averigua cómo incrustar esto en tu editor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-04 21:35:09
Esta pregunta es antigua, pero aparece en la parte superior de Google al buscar cómo ejecutar una sola prueba. No se si es una adición reciente, pero para ejecutar una sola prueba de una especificación se puede hacer lo siguiente:
rspec path/to/spec:<line number>
Where-line number - es un número de línea que contiene parte de su prueba. Por ejemplo, si tuviera 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 solo ejecutaría esa especificación. En de hecho, ese número podría ser de 2 a 5.
Espero que esto ayude!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-31 13:53:06
También puede usar el texto real del caso de prueba *e*xample con -e
!
Así que para:
it "shows the plane arrival time"
Puede 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 rastrillo aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-17 12:25:39
De help (spec-h):
-l, --line LINE_NUMBER Execute example group or example at given line.
(does not work for dynamically generated examples)
Ejemplo: spec spec / runner_spec.rb-l 162
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-17 10:10:24
Si instaló rspec como un plugin en lugar de como una gema, entonces no tendrá el ejecutable spec
.
En cualquier caso, todo lo que necesita hacer es ejecutar el archivo usando ruby. El código rspec es lo suficientemente inteligente como para ejecutar las pruebas por usted.
Eg:
ruby myclass_spec.rb
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-28 20:04:38
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-15 18:29:35
Ruby 1.9.2 y Rails 3 tienen una manera fácil de ejecutar un archivo spec:
ruby -I spec spec/models/user_spec.rb
Explicación:
-
ruby
el comando tiende a ser más rápido que el comandorake
-
-I spec
significa "incluir el directorio 'spec' al buscar archivos" -
spec/models/user_spec.rb
es el archivo que queremos ejecutar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-14 03:05:14
Estaba teniendo problemas para conseguir cualquiera de estos ejemplos para trabajar, tal vez porque el mensaje es viejo y los comandos han cambiado?
Después de investigar un poco encontré que esto funciona:
Rspec spec/models/user_spec.rb
Que ejecutará solo el archivo único y proporciona una salida útil en el terminal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-01 17:10:31
Specky.vim
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: sustitúyase " path_to / spec.rb ' con su camino. Las comillas son opcionales.
Para ejecutar una rspec test de un archivo: rspec 'path_to/spec.rb:7'
nota:: 7 es el número de línea donde comienza la prueba
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-01 21:44:24
Alternativamente, eche un vistazo a autotest.
Ejecutar autotest en una ventana de comandos significará que el archivo spec se ejecutará cada vez que lo guarde. Además, se ejecutará cada vez que se ejecute el archivo que está especificando.
Por ejemplo, si tiene un archivo de especificaciones del modelo llamado person_spec.rb, y un archivo de modelo que está speccing llamado persona.rb, luego cada vez que guarde cualquiera de estos archivos desde su editor, se ejecutará el archivo spec.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-03 09:12:30
Digamos que estás ejecutando test para crear todo. Siempre puede ejecutar ese código específico de especificaciones de tareas usando el archivo crete_spec.archivo rb como 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 usuario controlador específico esto.
rspec/spec/feaures/controller_name
Example: rspec/spec/features/todos
¡Espero que te dé más comprensión!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-08 10:43:46
Aunque se escribieron muchas grandes respuestas a esta pregunta, ninguna de ellas utiliza el Rspec tags
acérquense.
Utilizo etiquetas para ejecutar una o más especificaciones en archivos diferentes only solo aquellos relacionados con mi tarea de desarrollo actual.
Por ejemplo, agrego la etiqueta " dev "con el valor"current":
it "creates an user", dev: :current do
user = create(:user)
expect(user.persisted?).to be_truthy
end
Entonces corro
bundle exec rspec . --tag dev:current
Se pueden establecer diferentes etiquetas/valores en especificaciones individuales o grupos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-15 15:18:41