1

コードを複製せずにJavaScriptを使用して、または使用せずにキュウリのシナリオを実行する方法があるかどうか疑問に思いました。

html5ナビゲーションを活用したウェブサイトを開発しています。ただし、ブラウザがhtml5機能をサポートしていない場合は検出されます。

ナビゲーションをテストするキュウリテストを書きたいと思います。簡単なキュウリのシナリオで基本的なHTMLナビゲーションをテストできることはわかっています。また、同じシナリオで@javascriptタグを使用してhtml5ナビゲーションをテストできます。

このコードの重複を避けたいと思います。単純にブロックを呼び出してから、同じブロックを次のように呼び出すことができることを期待して、フックの周りを実験していました

Capybara.using_driver(Capybara.javascript_driver) { block.call }

ただし、これは機能しません。

誰かがこれを実装する方法を知っていますか?

PS私はRubyにまったく慣れておらず、キュウリを使い始めたばかりです。

4

3 に答える 3

1

2 つの異なるシナリオが必要なようです。バックグラウンド機能を使用してステップ定義を回避したいと思いますが、それは好みの問題です。

于 2012-06-06T07:40:09.533 に答える
1

環境変数を使用する Jon M による解決策に基づいて、各シナリオを実行する前に current_driver を設定する必要があります (default_driver を変更するよりも良いようです)。

Before do
  if ENV['USE_JS_DRIVER']
    Capybara.current_driver = Capybara.javascript_driver
  end
end

そして実行中

cucumber .
USE_JS_DRIVER=1 cucumber .
于 2012-10-23T15:49:57.060 に答える
0

両方のタイプのブラウザーを処理するための別個の機能を作成したくない場合、1 つの解決策は、環境変数を使用して、使用するブラウザー ドライバーのタイプをキュウリに伝え、キュウリを 2 回呼び出すことです。

おそらく次のように、正しいドライバーを設定するには、環境変数を照会する必要がありますenv.rb

if ENV['USE_JS_DRIVER']
    Capybara.current_driver = Capybara.javascript_driver
end

そして、次のいずれか/両方を実行できます。

cucumber .
USE_JS_DRIVER=1 cucumber .

両方のキュウリの実行結果をマージする便利な方法を見つける必要がありますが、ニーズによっては、シナリオを複製するよりも簡単な解決策になる可能性があります。

于 2012-06-06T08:29:23.057 に答える