ミズノブログ

ミズノです。プログラミング・子育て・経年変化するもの など好きなことを雑多に書きます。

RSpecの実行タイミングについてメモ

RSpecを使っている中で、思った挙動をしない時があったので実行タイミングを確認してみたメモ。
下記のようなテストコードを実行してみました。

require 'rails_helper'

RSpec.describe "実行タイミングを調べる" do
  puts '!!! describe'

  before do
    puts '[before] describe'
  end

  describe 'nest describe' do
    puts '!!! nest describe'

    before do
      puts '[before] nest describe'
    end

    it "nest example1" do
      puts '!!! nest example1'
    end

    it "nest example2" do
      puts '!!! nest example2'
    end
  end
end

# --- 実行結果 ---
# !!! describe
# !!! nest describe
#
# 実行タイミングを調べる
#   nest describe
# [before] describe
# [before] nest describe
# !!! nest example1
#     nest example1
# [before] describe
# [before] nest describe
# !!! nest example2
#     nest example2

beforeit は思ったとおりの挙動でしたが、describe 内のコードが before よりも前に実行されるのは意外でした。
一つ勉強になった。

参考:実行環境

⟩ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]

⟩ bin/rspec -v
Running via Spring preloader in process 54942
RSpec 3.9
  - rspec-core 3.9.2
  - rspec-expectations 3.9.2
  - rspec-mocks 3.9.1
  - rspec-rails 4.0.1
  - rspec-support 3.9.3