복붙노트

[RUBY-ON-RAILS] 사양 / spec_helper.rb에서 사양 /의 rails_helper.rb의 다른 방법은 무엇입니까? 나는 그것을 필요합니까?

RUBY-ON-RAILS

사양 / spec_helper.rb에서 사양 /의 rails_helper.rb의 다른 방법은 무엇입니까? 나는 그것을 필요합니까?

나는 두 번째 레일 자습서를하고있는 중이 야. 나는이를 입력 할 때

rails generate integration_test static_pages

나는 사양 / rails_helper.rb 및 사양 / spec_helper.rb 대신 단지 사양 / spec_helper.rb 수

내 테스트를 실행할 때 이제 그들은 느린 나는이 마지막 시간을했을 때 이상 (더 "자세한 정보")이며. 나는 두 파일의 차이가 무엇인지 궁금하고,하고 내가 뭔가 잘못을 한 경우. 또한, 모든 것을 엉망으로하지 않고 rails_helper.rb 파일을 제거하는 방법은 무엇입니까?

해결법

  1. ==============================

    1.3 spec_helper.rb 및 rails_helper.rb 생성 RSpec에이 레일. spec_helper.rb (예 : lib 디렉토리 디렉토리에 클래스 사양으로) 레일에 의존하지 않는 사양입니다. 할 스펙 (레일 프로젝트, 대부분 또는 모두에) 레일에 의존에 대한 rails_helper.rb이다. rails_helper.rb는 spec_helper.rb이 필요합니다. 그래서 더, rails_helper.rb 제거하지되지 않는다; 귀하의 사양에 (그리고 spec_helper.rb)이 필요합니다.

    3 spec_helper.rb 및 rails_helper.rb 생성 RSpec에이 레일. spec_helper.rb (예 : lib 디렉토리 디렉토리에 클래스 사양으로) 레일에 의존하지 않는 사양입니다. 할 스펙 (레일 프로젝트, 대부분 또는 모두에) 레일에 의존에 대한 rails_helper.rb이다. rails_helper.rb는 spec_helper.rb이 필요합니다. 그래서 더, rails_helper.rb 제거하지되지 않는다; 귀하의 사양에 (그리고 spec_helper.rb)이 필요합니다.

    당신은 당신이 스스로를 실행할 때이 아닌 레일에 의존하는 사양가 그들이있는 거 아닌 레일 의존 시행하고, 가능한 한 빨리 실행하려면, 당신은 그에서 spec_helper.rb보다는 rails_helper.rb을 필요로 할 수있다. 즉 인기있는 방법이 될 것이 분명하므로하지만, 오히려 하나의 도우미 또는 각 사양 파일에 다른 사람을 필요로하는 것보다 당신의 .rspec에 -r rails_helper 매우 편리합니다.

    당신이 스프링 프리 로더를 사용하는 경우, 각 클래스는 한 번만로드해야하고, 만 spec_helper을 필요로하는 하나의 스펙을 실행하는 경우에도 열심히 봄 클래스를로드, 그래서 일부 파일 만 spec_helper 요구에 훨씬 값이 없다 .

    출처 : https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files

  2. ==============================

    2.당신은 항상 spec_helper에 모든 CONFIGS을 결합 만 그가 도우미 파일을 레일 사양 도우미 INT를 요구할 수 있습니다.

    당신은 항상 spec_helper에 모든 CONFIGS을 결합 만 그가 도우미 파일을 레일 사양 도우미 INT를 요구할 수 있습니다.

    그것은 하루의 끝에, 당신은 수동으로 "리팩토링"을하고 있기 때문에 결코 "이상적인"입니다하지만 정말 당신을 괴롭히는 경우. 단지 Rspec.configure을 구성하는 방법을 완전히까지 당신에게 그게 전부에게 그것을 알고

    #rails_helper.rb
    
    require 'spec_helper'
    
    #EMPTY FILE
    
    

    그냥 모두 가지고하면은 특정 설치 레일

    # 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
    
  3. from https://stackoverflow.com/questions/24145329/how-is-spec-rails-helper-rb-different-from-spec-spec-helper-rb-do-i-need-it by cc-by-sa and MIT license