タグ付きのスイートフックの前にRSpecを使用する

私はRspecの前に(:suite)フックを使ってタグを付けようとしています:

  config.before(:suite, :selenium => true) do
    #magical awesomeness
  end

but Rspec doesn't seem to respect the tag and runs the code I only want to run with : selenium => true regardless.

奇妙な部分は、私は非常に似たようなことをしていることです:それぞれのフックも同様にうまくいくようです:

  config.around(:each, :selenium => true) do |example|
    Capybara.using_wait_time(10) do
      Capybara.using_driver(:selenium) do
        example.run
      end
    end
  end

誰でも私が間違っていることを知っている?

9

2 答え

これはうまくいくはずです:

if config.inclusion_filter[:selenium]
  config.before(:suite) do
    #magical awesomeness
  end
end
3
追加された
コマンドラインオプション - tag に応じて設定を変更すると便利です。 rspec spec --tag selenium では、 config.inclusion_filter [:selenium] がtrueを返します。
追加された 著者 Nobu,
これは私のためには機能しません。私は前に思っています:スイートは、タグが解釈される前に実行されます。
追加された 著者 vcardillo,

私はそれについて深くは見ていないが、私の推測では:スイートのスコープは、タグが解釈される前に実行される可能性がある。私が考える限りでは、とにかくスイートがほしいと思うでしょう(私はあなたの例で使用することができますが)。私はそれが前に行うことが可能だと思う:あなたがあなたのspec_helper.rbのように十分に "高い"それを置く限り、すべて同じことをするだろうか?

== EDIT ==

だから私はもう少し考えました。私の頭の中に飛び込んだ解決策はこういうものでした:

# spec_helper.rb
# run with the tag :selenium => true when you set your env var RUN_SELENIUM like so:
# %> RUN_SELENIUM=1 bundle exec rspec spec/
config.filter_run_excluding :selenium => true if ENV['RUN_SELENIUM'].nil?

# now your before suite hook can be something along the lines of
config.before(:suite) do
  if ENV['RUN_SELENIUM'].nil?
    ## regular awesomeness
  else
    ## magical awesomeness
  end
end

I did a similar thing to handle tags using guard and guard-spec. You can, of course, use the env var without the filter_run_excluding, and that would be the same as: %> RUN_SELENIUM=1 bundle exec rspec --tag selenium spec/ Adding the config line just helps keep it consistent.

希望が助けてくれる!

2
追加された
(:suite::with:>:conditions)条件ハッシュは特定の例と一致するために使用されますbefore(:suite)が実行されていないので特定の例またはグループとの関係、with:withスイートは事実上無視されます。 ruby​​doc.info/github/rspec/rspec-core/master/ RSpec/Core/Hooks しかし、spec_helperのbefore(:all)を使うと、スイート全体を何回か実行しても驚くほどのawesomenessが実行されるわけではありません。
追加された 著者 Ganesh Shankar,
ありがとう、これは動作し、賢いです。
追加された 著者 vcardillo,
よかった...編集された答え。希望が役立ちます。
追加された 著者 Craig Monson,