В RSpec, в чем разница между before (: suite) и before(:all)?

The до и после крючка документации на Смак только показывает, что before(:suite) вызывается до before(:all).

когда я должен использовать один над другим?

2 ответов


когда before(:all) определена в RSpec.configure блок вызывается перед каждой группой примеров верхнего уровня, в то время как before(:suite) блок кода вызывается только один раз.

вот пример:

RSpec.configure do |config|
  config.before(:all) { puts 'Before :all' }
  config.after(:all) { puts 'After :all' }
  config.before(:suite) { puts 'Before :suite' }
  config.after(:suite) { puts 'After :suite' }
end

describe 'spec1' do
  example 'spec1' do
    puts 'spec1'
  end
end

describe 'spec2' do
  example 'spec2' do
    puts 'spec2'
  end
end

выход:

Before :suite
Before :all
spec1
After :all
Before :all
spec2
After :all
After :suite

вы также можете использовать before (: suite) для запуска блока кода перед любым пример группы. Это должно быть объявлено в RSpec.настроить

http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Hooks