15

Railsアプリケーションには、アプリケーションのさまざまなページをテストする一連のキュウリ受け入れテストがあります。cucumberでは、特定のテスト(シナリオ)にタグを付けると@javascript、JavaScriptをサポートしない単純なドライバーではなく、JavaScriptドライバーを使用してそのシナリオが実行されます。

テストが現在JavaScriptをサポートするドライバーで実行されているのか、サポートしていないドライバーで実行されているのかを判断する簡単な方法はありますか?JavaScriptを有効にして実行している場合にテストの動作を少し変えることができるように、これが必要です。

4

4 に答える 4

29

誰かが興味を持っている場合に備えて、私はカピバラのドキュメントを見て、別の可能な解決策を見つけました:

if Capybara.current_driver == Capybara.javascript_driver
  # Supports JavaScript
else
  # Doesn't support JavaScript
end
于 2012-11-09T17:50:13.810 に答える
7

それはちょっと不快ですが、これは私が上陸したものです。どこかの要点から入手したと思います。申し訳ありませんが、リンクを失いましたが、少なくとも非常に簡単です。

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

他の js 対応ドライバーを定義する (または Gemfile で必要とする) 場合は、それらをこのリストに追加する必要があります。

于 2014-03-04T23:41:00.667 に答える
2

これを行う最も簡単な方法は、インスタンス変数をBeforeフックに設定することです。

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

次に、そのインスタンス変数の値を確認することで、シナリオがステップ定義でタグ付けされているかどうかをテストできます。

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

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

于 2012-11-08T02:07:54.263 に答える