Ruby Rspec在块之前运行一次,在多个it块之前运行一次

Ruby Rspec在块之前运行一次,在多个it块之前运行一次,ruby,rspec,Ruby,Rspec,我在rspec中有一个context块,其中有多个it块。我想运行一个before块来设置it块的数据,但是这个数据需要很长时间来设置,并且被用于只读。rspecbefore(:each)在花费很长时间的每个it块之后创建和删除此数据before(:all)在所有测试开始时创建数据,不删除它 我有没有办法让这些数据在上下文块中创建并在之后删除?因为RSpec 3这些数据被正式命名为在(:{example,context})之前/之后(请参阅) 您可以在(:context)之前设置数据,在(:co

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


我有没有办法让这些数据在
上下文块中创建并在之后删除?

因为RSpec 3这些数据被正式命名为
在(:{example,context})
之前/之后(请参阅)

您可以在(:context)
之前设置数据,在(:context)之后清理数据

RSpec.描述要做的事情
在(:上下文)之前做
@新事物
结束
在(:context)之后做什么
@删除
结束
它“有0个小部件”做什么
expect(@thing.widgets.count).to eq(0)
结束
它“可以接受新的小部件”吗

@thing.widgets您是否尝试过在(:all)
之后使用
块在完成后清理数据?听起来好像你之前有一个
(:all)
在它设置的地方工作,你只需要拆下它。这是下面第一个答案中提到的,但是使用了不同的别名(
:context
,而不是
:all