2012-02-06 11 views
9

とスイートフックの前にRSpecの使用:そうのようなタグでフック(スイート):私は前にRSpecのを使用しようとしているタグ

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

が、RSpecのは、タグを尊重していないようだと、私は実行したいコードを実行します:selenium => true true。各フックだけでなく、それが正常に動作するようです:

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

誰もが私が間違ってやっているか知っているの

奇妙な部分は、私は非常に同じようなことをやっているということですか?

答えて

2

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

== EDITの==

だから私はいくつかのより多くのそれについて考え、そして私の頭の中にpopedソリューションは、このようなものだった:私は使用してタグを処理するために同様のことをした

# 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 

ガードとガード仕様。もちろん、filter_run_excludingせずにenv varを使用することもできます。 %> RUN_SELENIUM = 1 bundle exec rspec --tag selenium spec/ 設定行を追加するだけで、一貫性を保つのに役立ちます。

希望に役立ちます!

+0

はちょっとPoopinpants(すごい名前ところで)、うんRSpecのコアドキュメントの状態「警告:前(:スイート、:条件:=>付き) が条件のハッシュが使用されていますbefore(:suite)は特定の例やグループに関して実行されないため、with:suiteと一緒に渡される条件は実質的に無視されます。 http://rubydoc.info/github/rspec/rspec-core/master/RSpec/Core/Hooksしかし、spec_helperのbefore(:all)を使用しても、スイート全体で何度も魔法のawesomenessを実行するわけではありません。それは私が探しているものではありません。 –

+0

Alrighty ...編集済みの回答。希望が役立ちます。 –

+0

ありがとう、これは動作し、賢いです。 – vcardillo

3

これは動作するはずです:

if config.inclusion_filter[:selenium] 
    config.before(:suite) do 
    #magical awesomeness 
    end 
end 
+0

コマンドラインオプション '--tag'に応じて設定を変更すると便利です。 'rspec spec --tag selenium'では' config.inclusion_filter [:selenium] 'がtrueを返します。 – Nobu

+0

これは私にとっては役に立ちません。私は前に思っています:スイートは、タグが解釈される前に実行されます。 – vcardillo

関連する問題