2012-11-06 14 views
12

私のRailsアプリケーションでは、私のアプリケーションのさまざまなページをテストするキュウリ受け入れテストがあります。キュウリの場合、特定のテスト(シナリオ)に@javascriptというタグを付けると、JavaScriptをサポートしていない単純なドライバではなく、JavaScriptドライバを使用してシナリオが実行されます。Capybaraでは、現在使用されているドライバがJavaScriptをサポートしているかどうかをどのように判断できますか?

私のテストで、JavaScriptをサポートするドライバで実行されているのか、そうでないドライバがあるのか​​を判断する簡単な方法はありますか? JavaScriptが有効な状態でテストを実行している場合、私のテストを少し違ったものにすることができます。これを行う最も簡単な方法は、Beforeフックでインスタンス変数を設定することがあるよう

答えて

25

誰もが興味を持っていた場合には、私はdocumentation for Capybaraで見ていたし、別の可能な解決策が見つかりました:それは一種の嫌なのですが、これは私が上陸したものです

if Capybara.current_driver == Capybara.javascript_driver 
    # Supports JavaScript 
else 
    # Doesn't support JavaScript 
end 
+0

良いアイデア - これは受け入れられた回答でなければなりません... –

+0

さて、それでは。私は質問とこの答えの両方を投稿した人だから、これを受け入れられた答えとして挙げることを躊躇した。しかし、あなたはこの答えが気に入っているように思えるので、私は先に進み、それを受け入れます。 – Ajedi32

+1

javascript_driverがpoltergeistの場合を除いてOKですが、具体的な例は実際にセレンを使用しています – steve

2

this answerから私に見える:

Before('@javascript') do 
    @javascript = true 
end 

シナリオが値をチェックすることにより、ステップの定義でタグ付けされている場合、あなたがテストすることができますそのインスタンス変数の:

When /^I go to the homepage$/ do 
    if @javascript 
    ... 
    else 
    ... 
    end 
end 

私はこれをテストし、うまくいくようです。

7

を。私はどこか主旨​​からそれを得たと考えて、申し訳ありません私はそれへのリンクを失ったが、少なくともそれは非常に簡単です:あなたが定義する(またはあなたのGemfileに必要)ドライバが有効、他のJSをした場合、あなたに

def javascript_test? 
    [:selenium, :webkit, :chrome, :poltergeist].include?(Capybara.current_driver) 
end 

必要があるだろうこのリストに追加してください。

関連する問題