Rspecでdescribeをネストしたときの動作
調べてみた。
ネストしていてもあまり気にせず、it単位でbefore/afterが入るみたい。
で、before(:all)/after(:all)はネストされたdescribe単位になる。
describe "レベル1" do before(:all) do; p "レベル1 before(:all)"; end before do; p "レベル1 before"; end describe "レベル2-1" do before(:all) do; p "レベル2-1 before(:all)"; end before do; p "レベル2-1 before"; end it "レベル2-1のit-1" do; p "レベル2-1のit-1"; end it "レベル2-1のit-2" do; p "レベル2-1のit-2"; end after do; p "レベル2-1 after"; end after(:all) do; p "レベル2-1 after(:all)"; end end describe "レベル2-2" do before(:all) do; p "レベル2-2 before(:all)"; end before do ; p "レベル2-2 before"; end describe "レベル3-1" do before(:all) do; p "レベル3-1 before(:all)"; end before do; p "レベル3-1 before"; end it "レベル3-1のit-1" do; p "レベル3-1のit-1"; end it "レベル3-1のit-2" do; p "レベル3-1のit-2"; end after do; p "レベル3-1 after"; end after(:all) do; p "レベル3-1 after(:all)"; end end it "レベル2-2のit-1" do; p "レベル2-2のit-1"; end it "レベル2-2のit-2" do; p "レベル2-2のit-2"; end after do; p "レベル2-2 after"; end after(:all) do; p "レベル2-2 after(:all)"; end end after do; p "レベル1 after"; end after(:all) do; p "レベル1 after(:all)"; end end
これを実行すると、こうなる。
レベル1 レベル2-1 "レベル1 before(:all)" "レベル2-1 before(:all)" "レベル1 before" "レベル2-1 before" "レベル2-1のit-1" "レベル2-1 after" "レベル1 after" - レベル2-1のit-1 "レベル1 before" "レベル2-1 before" "レベル2-1のit-2" "レベル2-1 after" "レベル1 after" - レベル2-1のit-2 "レベル2-1 after(:all)" "レベル1 after(:all)" レベル1 レベル2-2 "レベル1 before(:all)" "レベル2-2 before(:all)" "レベル1 before" "レベル2-2 before" "レベル2-2のit-1" "レベル2-2 after" "レベル1 after" - レベル2-2のit-1 "レベル1 before" "レベル2-2 before" "レベル2-2のit-2" "レベル2-2 after" "レベル1 after" - レベル2-2のit-2 "レベル2-2 after(:all)" "レベル1 after(:all)" レベル1 レベル2-2 レベル3-1 "レベル1 before(:all)" "レベル2-2 before(:all)" "レベル3-1 before(:all)" "レベル1 before" "レベル2-2 before" "レベル3-1 before" "レベル3-1のit-1" "レベル3-1 after" "レベル2-2 after" "レベル1 after" - レベル3-1のit-1 "レベル1 before" "レベル2-2 before" "レベル3-1 before" "レベル3-1のit-2" "レベル3-1 after" "レベル2-2 after" "レベル1 after" - レベル3-1のit-2 "レベル3-1 after(:all)" "レベル2-2 after(:all)" "レベル1 after(:all)"