around(:suite)
does not exist.around(:all)
runs after before(:all)
and before after(:all)
.around(:each)
runs before before(:each)
and after after(:each)
.As this is not 100% obvious (and not yet documented) it is written down in this card. In RSpec 3 :each
has the alias :example
and :all
the alias :context
.
RSpec.configure do |config|
config.before(:suite) { puts 'BEFORE :suite' }
config.after(:suite) { puts 'AFTER :suite' }
end
describe 'order of hook execution' do
around(:all) do |each|
puts 'AROUND BEFORE :all'
each.run
puts 'AROUND AFTER :all'
end
around(:each) do |each|
puts 'AROUND BEFORE :each'
each.run
puts 'AROUND AFTER :each'
end
before(:all) { puts 'BEFORE :all' }
before(:each) { puts 'BEFORE :each' }
after(:each) { puts 'AFTER :each' }
after(:all) { puts 'AFTER :all' }
it { expect(true).to be(true) }
end
BEFORE :suite
BEFORE :all
AROUND BEFORE :all
AROUND BEFORE :each
BEFORE :each
# our example runs here
AFTER :each
AROUND AFTER :each
AROUND AFTER :all
AFTER :all
AFTER :suite