¿Cómo puedo decirle a Rails que use RSpec en lugar de la unidad de prueba al crear una nueva aplicación Rails?

152

He test-unitinstalado y rspecinstalado (junto con -core, -expectations, -mocksy la -railsversión 2.6.x). Cuando ejecuto el comando rails new foo, se usa test-unitpara generar los archivos de prueba en lugar de rspec.

¿Hay una opción donde puedo decirle a los rieles que usen rspec para generar las pruebas en su lugar?

aarona
fuente

Respuestas:

262

Lo siguiente debería funcionar:

en la línea de comando:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

en Gemfile:

gem 'rspec-rails'

en la línea de comando:

bundle install
rails g rspec:install
Zabba
fuente
Creo que algunos de esos pasos están fuera de servicio, ¿no? Parece que esto funcionaría si se hiciera en el orden correcto. Edite su respuesta y la marcaré como aceptada.
aarona
6060
No necesita el generator.rbinicializador, esto se encarga de la railtie de RSpec. Todo lo que necesita está rspec-railsdentro del developmentgrupo de lo Gemfileque es suficiente para requerirlo para los generadores. Tampoco necesita generar la aplicación -T, puede eliminar el testdirectorio y funcionará.
Ryan Bigg
1
¿Se puede editar el código de g.test_framework =: rspec a g.test_framework: rspec
Deepak Lamichhane el
8
@RyanBigg: con la opción -T habremos "rails/test_unit/railtie"comentado enapplication.rb
Giang Nguyen
13
Cuando agrega la rspec-railsgema, es importante ponerla a prueba y desarrollo, o los generadores no usarán RSpec incluso si sigue los pasos anteriores.
februaryInk
73

Cree su nueva aplicación de rieles como:

rails new <app_name> -T

O elimine su testdirectorio de su aplicación existente:

rm -rf test/

Haga una entrada en su Gemfile:

gem 'rspec-rails'

Desde la línea de comando instale la gema

$ bundle install

Desde la línea de comandos, instale rspec en su aplicación:

$ rails g rspec:install

Ahora su aplicación de rieles usa RSpec en lugar de unidad de prueba.

Sayuj
fuente
2
faltaba el paso 'instalación de paquete' de esa lista. Adicional.
cczona
6

Una vez que haya creado su aplicación de rieles con:

rails new <app_name> -T  # to exclude Test::Unit

Agregue la gema RSpec a su Gemfile de la siguiente manera:

group :development, :test do
  gem "rspec-rails"
end

En la línea de comando escriba:

bundle install  # this will install the missing gems

Ahora necesita instalar RSpec ejecutando:

rails generate rspec:install

Esto generará los siguientes archivos:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

Le recomiendo leer todos los comentarios spec_helper y rails_helper para comprender lo que hace cada opción.

Una vez que todo esté configurado, puede ejecutar todas sus pruebas con:

bundle exec rspec

Puede leer más sobre las configuraciones recomendadas spec_helper y rails_helper en https://kolosek.com/rails-rspec-setup .

Nesha Zoric
fuente
4

Soy un desarrollador nuevo y acabo de hacer una bandera de rieles (-rspec) para abordar el problema de OP. Se deshace de Test :: Unit e inserta la gema rails-rspec con un script bash. El script se puede modificar para ayudar a los desarrolladores de Linux agregando automáticamente gemas de therubyracer o creando banderas y conjuntos de gemas personalizados. (tal vez específicamente ir a esa línea de gema y eliminar el comentario)

Aquí está la esencia && Espero que esto ayude a alguien. https://gist.github.com/MTen/8310116

MTen
fuente
0

No hay una forma nativa de hacer esto con la railsCLI. Genere un nuevo proyecto sin test-unit:

rails new rails-app --skip-test

Y luego siga las rspecinstrucciones para integrarlo en la nueva aplicación Rails.

este es mi diseño
fuente