Posted over 2 years ago. Visible to the public. Repeats.

Rspec: around(:all) and around(:each) hook execution order

Summary

  • 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.

Example

Copy
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
Copy
BEFORE :suite BEFORE :all AROUND BEFORE :all AROUND BEFORE :each BEFORE :each . # our each runs here AFTER :each AROUND AFTER :each AROUND AFTER :all AFTER :all AFTER :suite

Further around hook related problems

Once an application no longer requires constant development, it needs periodic maintenance for stable and secure operation. makandra offers monthly maintenance contracts that let you focus on your business while we make sure the lights stay on.

Owner of this card:

Avatar
Emanuel De
Last edit:
about 1 month ago
by Emanuel De
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Emanuel De to makandra dev
This website uses cookies to improve usability and analyze traffic.
Accept or learn more