2013-09-04 7 views
8

仕様が実行されるたびに、仕様を実行するたびになぜ私は "カピバラを含む:グローバルスコープ内のDSLはお勧めしません!"

$ rspec spec/integration/view_homepage_spec.rb 
including Capybara::DSL in the global scope is not recommended! 
. 

Finished in 0.6174 seconds 
1 example, 0 failures 

Randomized with seed 14130 

$ 

私のGemfileがあります

group :test, :development do 
    gem 'rspec-rails' 
    gem 'capybara' 
end 

マイspec_helperがあります

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara' 
include Capybara::DSL 
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } 
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration) 
RSpec.configure do |config| 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
    config.infer_base_class_for_anonymous_controllers = false 
    config.order = "random" 
end 

私がコメントアウトした場合visitようinclude Capybara::DSLその後、私のカピバラ方法は動作しません。

+0

::トップレベルのスコープで 'カピバラを含める:: DSL'

はここに正しい方法です。そうすることはお勧めできません。あなたのカピバラ特有のテストにそれを含めてください。 –

答えて

18

Capybara::DSLをグローバルスコープに含めることは推奨されません。

これには、システム内で世界的に多くのメソッドが含まれているため、自分のコードに干渉する可能性があります。それはすぐそこです

RSpec.configure do |config| 
    config.include Capybara::DSL, :type => :feature 
end 
+1

':type =>:feature'は、spec/acceptance、spec/features、spec/integrationの下で仕様のために働くべきです。コントローラ、モデル、ビューの仕様にはCapybara :: DSLを使用したくありません。 –

+4

':type =>:feature'を削除して機能させる必要がありました。 – Jngai1297

+0

'type'オプションはもはや(RSpec 3以降)' spec/features'のテストに設定オプションを '魔法のように'適用しません - http://myronmars.to/n/dev-blog/2014/05を参照してください/注目の変更 - rspec-3#filetype_inference_disabled_by_default – sameers

関連する問題