Estoy haciendo el tutorial de Rails por segunda vez. Cuando entro en esto
rails generate integration_test static_pages
Obtengo spec/rails_helper.rb
y en spec/spec_helper.rb
lugar de solospec/spec_helper.rb
Ahora, cuando ejecuto mis pruebas, son más largas (más "detalladas") y más lentas que cuando lo hice la última vez. Me pregunto cuál es la diferencia entre los dos archivos y si hice algo mal. Además, ¿hay alguna manera de deshacerse del rails_helper.rb
archivo sin estropearlo todo?
ruby-on-rails
testing
rspec
rspec-rails
rspec3
usuario3417583
fuente
fuente
Respuestas:
rspec-rails 3 genera
spec_helper.rb
yrails_helper.rb
.spec_helper.rb
es para especificaciones que no dependen de Rails (como especificaciones para clases en el directorio lib).rails_helper.rb
es para especificaciones que dependen de Rails (en un proyecto de Rails, la mayoría o todas).rails_helper.rb
requierespec_helper.rb
. Así que no, no te deshagas derails_helper.rb
; lo requiera (y nospec_helper.rb
) en sus especificaciones.Si desea que sus especificaciones no dependientes de Rails hagan cumplir que no dependen de Rails y que se ejecuten lo más rápido posible cuando las ejecute por sí mismas, podría requerir en
spec_helper.rb
lugar derails_helper.rb
esas. Pero es muy conveniente-r rails_helper
en su.rspec
lugar en lugar de requerir un ayudante u otro en cada archivo de especificaciones, por lo que seguramente será un enfoque popular.Si está utilizando el precargador de resorte, cada clase solo debe cargarse una vez, y el resorte carga las clases con entusiasmo incluso si solo ejecuta una única especificación que lo requiere
spec_helper
, por lo que no es tan valioso requerir solospec_helper
en algunos archivos.Fuente: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files
fuente
Siempre puede combinar todas sus configuraciones en spec_helper y solo requiere el ayudante de especificaciones en el archivo de ayuda de rieles.
De ninguna manera es "ideal" ya que al final del día, estás haciendo manualmente este "refactor" pero SI realmente te molesta. solo sé que depende totalmente de ti cómo estructurar el
Rspec.configure
#rails_helper.rb require 'spec_helper' #EMPTY FILE
y solo trae todas las configuraciones específicas de rieles en
# spec_helper.rb # This file is copied to spec/ when you run 'rails generate rspec:install' require 'spec_helper' ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../config/environment', __dir__) # Prevent database truncation if the environment is production abort("The Rails environment is running in production mode!") if Rails.env.production? require 'rspec/rails' # Add additional requires below this line. Rails is not loaded until this point! # Requires supporting ruby files with custom matchers and macros, etc, in # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are # run as spec files by default. This means that files in spec/support that end # in _spec.rb will both be required and run as specs, causing the specs to be # run twice. It is recommended that you do not name files matching this glob to # end with _spec.rb. You can configure this pattern with the --pattern # option on the command line or in ~/.rspec, .rspec or `.rspec-local`. # # The following line is provided for convenience purposes. It has the downside # of increasing the boot-up time by auto-requiring all files in the support # directory. Alternatively, in the individual `*_spec.rb` files, manually # require only the support files necessary. # # Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f } # Checks for pending migrations and applies them before tests are run. # If you are not using ActiveRecord, you can remove these lines. begin ActiveRecord::Migration.maintain_test_schema! rescue ActiveRecord::PendingMigrationError => e puts e.to_s.strip exit 1 end RSpec.configure do |config| ... all our config.whatever_your_heart_desires
fuente