2016-06-19 11 views
1

を使用することによってのみ、特定のテストにビリーを吹かしトリガするためにどのように私は、特定のテストにwebkit_billyPuffing Billy gemのJavascriptのドライバ)に切り替えたいと思います。レール/ RSpecのは:RSpecのメタデータ

describe "xxx", billy: true do 
end 

これは、RSuffにビリングドライバに切り替えるように通知する必要があります。

私はspec_helper.rbでこれを書いたが、働いていない:

config.before(:each) do |example| 
    if [:billy].include? example.metadata[:type] 
     Capybara.current_driver  = :webkit_billy 
     Capybara.javascript_driver = :webkit_billy 
    else 
     Capybara.current_driver  = :webkit 
     Capybara.javascript_driver = :webkit 
    end 
    end 

答えて

2

Capybara.javascript_driverは、js: trueメタデータがaddの場合にのみ(通常の設定で)使用されます。テストに追加されたので、javascript_driverの値をwebkit_billyにリセットする必要はありません。これは、jsメタデータを使用するすべてのテストに影響するからです。デフォルト動作の実装を見ることができます(capybara/rspecが必要な場合)here これはCapybara.default_driverが何であってもテストのドライバを最初に設定した場合、jsのメタデータが存在する場合、ドライバにCapybaraの値を設定します.javascript_driverと入力し、driverのメタデータが存在する場合はそれを設定します。 driverメタデータが 'js'より優先され、何もdefault_driverを取得しない場合。これが意味することは、特別な追加なしに、あなたはdriver: :webkit_billyをテストに指定して、そのテストにwebkit_billyを使うことができます。 billy: trueを指定することができるという希望振る舞いを追加するには

あなたはちょうどあなたが「カピバラ/ RSpecの」を必要としましたが、データベース・クリーナの設定が定義される前に、どこか

RSpec.configure do |config| 
    config.before(:each, billy: true) do 
    Capybara.current_driver  = :webkit_billy 
    end 
end 

後にする必要があります。次に、Capybara.default_driverを、メタデータが指定されていないときに使用するドライバに設定し、jsメタデータが指定されたときに使用するドライバにCapybara.javascript_driverを設定します。したがって、 - webkitドライバ(billyが指定されている場合を除く)を常に使用したい場合は​​を指定し、js: trueを指定する必要はありませんが、特定のテストにdriver: :rack_testメタデータを追加することによって、

注:推奨されているdatabase_cleaner config-https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-exampleを使用していて、jsメタデータが存在するだけでなく、使用されている実際のドライバに基づいてデータベース戦略を変更すると仮定します。

0

を試すについては、これはどのように:

config.before(:each, billy: true) do |example| 
     Capybara.current_driver  = :webkit_billy 
     Capybara.javascript_driver = :webkit_billy 
end 

またはあなたの現在のアプローチを行くために、あなたがしたい:

config.before(:each) do |example| 
    if example.metadata[:billy] # this should either be true or nil 
     Capybara.current_driver  = :webkit_billy 
     Capybara.javascript_driver = :webkit_billy 
    else 
     Capybara.current_driver  = :webkit 
     Capybara.javascript_driver = :webkit 
    end 
    end