Usando o RSpec antes do gancho do conjunto com uma tag

9

Estou tentando usar o Rspec antes do gancho (: suite) com uma tag como esta:

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

mas o Rspec não parece respeitar a tag e executa o código com o qual eu só quero correr: selenium = > verdadeiro independentemente.

A parte estranha é que eu estou fazendo uma coisa muito parecida com o: cada gancho também e parece funcionar bem:

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

Alguém sabe o que estou fazendo errado?

    
por Ganesh Shankar 06.02.2012 в 11:16
fonte

2 respostas

3

Isso deve funcionar:

if config.inclusion_filter[:selenium]
  config.before(:suite) do
    #magical awesomeness
  end
end
    
por Yuriy Kharchenko 29.05.2012 / 11:54
fonte
2

Eu não olhei profundamente para isso, mas meu palpite é que o escopo: suite pode ser executado antes que qualquer tag seja interpretada. Tanto quanto eu posso pensar, você só quer um: suite de qualquer maneira (embora eu possa ver o uso em seu exemplo). Eu acho que é possível fazer um antes: tudo o que faria a mesma coisa, contanto que você o coloque "alto" o suficiente, como diz no seu spec_helper.rb?

== EDIT ==

Então eu pensei mais sobre isso, e uma solução que surgiu na minha cabeça foi algo assim:

# 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

Eu fiz uma coisa semelhante para lidar com tags usando guarda e guarda-spec. Você pode, claro, usar o env var sem o filter_run_excluding, e isso seria o mesmo que:     % > RUN_SELENIUM = 1 pacote exec rspec --tag selenium spec / Adicionar a linha de configuração apenas ajuda a mantê-la consistente.

Espero que ajude!

    
por Craig Monson 18.02.2012 / 17:25
fonte