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
before
や it
は思ったとおりの挙動でしたが、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