Posted over 3 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

Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for old versions of Ruby on Rails (3.2 and 2.3).

Owner of this card:

Avatar
Emanuel De
Last edit:
12 months 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 short-lived cookies to improve usability.
Accept or learn more