gpt4 book ai didi

ruby - Rspec 在多个 it block 之前在 block 之前运行一次

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:13 24 4
gpt4 key购买 nike

我在 rspec 中有一个 context block ,里面有多个 it block 。我想运行一个 before block 来为 it block 设置数据,但此数据需要很长时间才能设置并且只用于读取。 rspec before(:each) 在每个 it block 之后创建和删除此数据,这需要很长时间。 before(:all) 在所有测试开始时创建数据并且不删除它。

有什么方法可以在 context block 中创建这些数据并在之后删除?

最佳答案

从 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

关于ruby - Rspec 在多个 it block 之前在 block 之前运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57175697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com