test_helper - Ruby on Rails: cambia de test_unit a rspec
test ruby on rails (9)
1. cuando cree una nueva aplicación de rieles, omita el marco TestUnit, o generará el directorio test_unit.
$rails new your_app --skip-test-unit
2. agregue el código siguiente a su archivo_app / config / application.rb:
config.generators do |g| g.test_framework :rspec end
3. agregue el código siguiente al Gemfile de su_aplicación:
group :test, :development do gem ''rspec-rails'' end
y ejecuta bundle install
para instalar la gema rspec
4. Inicializa la especificación / directorio
rails generate rspec:install
más detalles, consulte: https://github.com/rspec/rspec-rails
Estoy repasando un tutorial que sugirió el uso de rspec
, pero ya he pasado por una gran cantidad de instalación de rieles predeterminada. Realmente no quiero tener que volver a hacer la instalación. De todos modos, cuando corro
$ rails g integration_test named
yo obtengo
invoke test_unit
create test/integration/named_test.rb
Cuando ejecuto bundle
, se enumeran varias gemas rspec
, pero test_unit
no. El tutorial parece tener rails invocar rspec
lugar de test_unit
sin hacer nada adicional. ¿Cómo obtengo los rieles para usar rspec
con el comando generador de prueba de integración?
A partir de Rails 3.2.12, siga estos pasos en orden
rails new app_name --skip-test-unit
Agregue rspec-rails a su Gemfile en el desarrollo, grupo de prueba
group :development, :test do
gem ''rspec-rails''
end
Ejecutar la bundle install
Ejecute el generador
rails generate rspec:install
... y limpiar su directorio de prueba existente:
rm -Rf $RAILS_ROOT/test
En config / application, agregue este código
config.generators do |g|
g.test_framework :rspec
g.integration_tool :rspec
end
En su archivo config/application.rb
:
config.generators do |g|
g.test_framework :rspec
end
Ahora cuando ejecuta sus generadores, obtiene archivos de prueba rspec. Recuerde reiniciar su servidor. Para más información sobre generadores ver:
RailsCasts # 216 Generators in Rails 3
Si realmente quieres usar el generador de prueba de integración:
rails g integration_test named --integration-tool=rspec
Lo que encontré que hice es que algunos de los otros métodos funcionan todavía es para verificar mi ortografía ... Tenía lo que @tovodeverett tenía para agrupar rspec-rails con: desarrollo y prueba, pero deletreaba el desarrollo incorrectamente. Eso solucionó mi problema, pero estaba generando pruebas con test_unit en lugar de rspec.
Para usar RSpec en lugar de Test :: Unit predeterminado, ejecute primero el siguiente comando
$ rails generate rspec:install
Este comando creará la siguiente carpeta / archivos
create .rspec
create spec
create spec/spec_helper.rb
Ahora, cada vez que use un generador para generar componentes de rieles como controlador, modelo, etc., creará las RSpecs correspondientes.
Se encontró con este problema hoy. application.rb tiene que actualizarse con:
config.generators do |g|
g.test_framework :rspec
g.integration_tool :rspec
end
Trabajando con Rails 3.2.8 y rspec-rails 2.11.4 , descubrí que mi problema estaba en mi Gemfile. Tenía rspec-rails
en el :test
grupo de :test
pero no en el grupo de :development
. Como Rails se ejecuta de manera predeterminada en modo de desarrollo (incluso cuando se ejecuta generate), rspec-rails
debe estar en su :development
grupo de :development
para que se enganche en los generadores. Una vez que tuve eso en su lugar, todo funcionó bien.
$ rails g model Account
invoke active_record
create db/migrate/20140205052617_create_accounts.rb
create app/models/account.rb
invoke test_unit
create test/models/account_test.rb
create test/fixtures/accounts.yml
$ rails d model Account
La ejecución de script / rails genera rspec: install no agrega rspec como marco predeterminado. Se agregó el comando debajo en config / application.rb y luego funciona
config.generators do |g|
g.test_framework :rspec
end
$ rails g model Account
invoke active_record
create db/migrate/20140205052957_create_accounts.rb
create app/models/account.rb
invoke rspec
create spec/models/account_spec.rb
$ rails -v
Rails 4.0.2