簡體   English   中英

Rspec在阻塞之前在塊之前運行一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM