使用 RSpec 的 `before(:all)' 块时,我遇到了范围问题。
以前我使用的是before(:each)
,效果很好:
module ExampleModule
describe ExampleClass
before(:each) do
@loader = Loader.new
end
...
context 'When something' do
before(:each) do
puts @loader.inspect # Loader exists
# Do something using @loader
end
...
end
end
end
但是切换嵌套的before(:each) block to
before(:all) 意味着 loader 为零:
module ExampleModule
describe ExampleClass
before(:each) do
@loader = Loader.new
end
...
context 'When something' do
before(:all) do
puts @loader.inspect # Loader is nil
# Do something using @loader
end
...
end
end
end
那么为什么 @loader 在 before(:all) 块中是 nil 而不是在 before(:each) 块中呢?