Использование RSpec перед пакетом hook с тегом - PullRequest
9 голосов
/ 06 февраля 2012

Я пытаюсь использовать хук Rspec before (: suite) с таким тегом:

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

но Rspec, похоже, не уважает тег и запускает код, с которым я хочу работать только: selenium => 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 ]

3 голосов
/ 29 мая 2012

Это должно работать:

if config.inclusion_filter[:selenium]
  config.before(:suite) do
    #magical awesomeness
  end
end
2 голосов
/ 18 февраля 2012

Я не углублялся в это, но я предполагаю, что область действия: suite может быть запущена до интерпретации любых тегов. Насколько я могу подумать, вы бы хотели только один: suite в любом случае (хотя я вижу использование в вашем примере). Я думаю, что возможно сделать до: все, что будет делать то же самое, если вы поставите его «достаточно высоко», как, скажем, в вашем 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

Я сделал подобную вещь для обработки тегов при помощи охраннику и сторожевой-спецификации. Конечно, вы можете использовать env var без filter_run_excключения, и это будет то же самое, что и: %> RUN_SELENIUM = 1 пакет exec rspec --tag селен спецификация / Добавление конфигурации линии только помогает держать его последовательны.

Надеюсь, это поможет!

...