[英]Rspec run before block once before multiple it blocks
我有一個context
在rspec的塊與多個it
里面塊。 我想運行一個前塊來為it
設置數據塊,但這個數據需要很長時間才能設置並且只能用於只讀。 rspec before(:each)
在每個塊之后創建和刪除此數據,這需要很長時間。 before(:all)
在所有測試開始時創建數據,但不刪除它。
有沒有辦法可以在context
塊中創建這些數據並在之后刪除?
自RSpec 3以來,這些正式命名為before/after(:{example,context})
(參見docs )。
您想要完成的任務可以通過設置數據的before(:context)
和清理它的after(:context)
來完成。
RSpec.describe Thing do
before(:context) do
@thing = Thing.new
end
after(:context) do
@thing.delete
end
it "has 0 widgets" do
expect(@thing.widgets.count).to eq(0)
end
it "can accept new widgets" do
@thing.widgets << Object.new
end
it "shares state across examples" do
expect(@thing.widgets.count).to eq(1)
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.