Saya melakukan Tutorial Rails untuk kedua kalinya. Saat saya masuk ini
rails generate integration_test static_pages
Saya mendapatkan spec/rails_helper.rb
dan spec/spec_helper.rb
bukannya hanyaspec/spec_helper.rb
Sekarang ketika saya menjalankan pengujian saya, mereka lebih lama (lebih "bertele-tele") dan lebih lambat daripada saat saya melakukannya terakhir kali. Saya bertanya-tanya apa perbedaan antara kedua file tersebut, dan apakah saya melakukan kesalahan. Juga, apakah ada cara untuk menyingkirkan rails_helper.rb
file tanpa mengacaukan semuanya?
ruby-on-rails
testing
rspec
rspec-rails
rspec3
pengguna3417583
sumber
sumber
Jawaban:
rspec-rails 3 menghasilkan
spec_helper.rb
danrails_helper.rb
.spec_helper.rb
adalah untuk spesifikasi yang tidak bergantung pada Rails (seperti spesifikasi untuk kelas di direktori lib).rails_helper.rb
adalah untuk spesifikasi yang bergantung pada Rails (dalam proyek Rails, sebagian besar atau semuanya).rails_helper.rb
membutuhkanspec_helper.rb
. Jadi tidak, jangan singkirkanrails_helper.rb
; membutuhkannya (dan tidakspec_helper.rb
) dalam spesifikasi Anda.Jika Anda ingin spesifikasi yang tidak bergantung pada Rails memaksakan bahwa mereka tidak bergantung pada Rails, dan untuk bekerja secepat mungkin saat Anda menjalankannya sendiri, Anda dapat meminta
spec_helper.rb
daripadarails_helper.rb
di dalamnya . Tapi itu sangat nyaman untuk-r rails_helper
Anda.rspec
daripada membutuhkan satu helper atau lainnya di setiap file spesifikasi, jadi itu pasti akan menjadi pendekatan yang populer.Jika Anda menggunakan prapemuat pegas, setiap kelas hanya perlu dimuat satu kali, dan pegas memuat kelas dengan penuh semangat meskipun Anda hanya menjalankan satu spesifikasi yang memerlukan
spec_helper
, jadi tidak ada nilai yang cukup jika hanya memerlukanspec_helper
di beberapa file.Sumber: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files
sumber
Anda selalu dapat menggabungkan semua konfigurasi Anda ke dalam spec_helper dan hanya membutuhkan spec helper int he rails helper file.
Ini sama sekali tidak "ideal" karena pada akhirnya, Anda secara manual melakukan "refactor" ini tetapi JIKA itu benar-benar mengganggu Anda. hanya tahu itu sepenuhnya terserah Anda bagaimana menyusun
Rspec.configure
#rails_helper.rb require 'spec_helper' #EMPTY FILE
dan cukup masukkan semua pengaturan khusus rel
# 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
sumber