我有一个规格文件,如下所示:
# foo_spec.rb
class Foo
end
describe Foo do
let(:foo) { 'foo' }
subject { bar }
# before(:all) { foo } # The seond example fails if uncomment this line.
describe 'test one' do
let(:bar) { 'one' }
it { should == 'one' }
end
describe 'test two' do
let(:bar) { 'two' }
it { should == 'two' }
end
end
这两个示例都按预期通过。但是,如果我取消注释 before(:all),第二个示例将失败:
1) Foo test two
Failure/Error: it { should == 'two' }
expected: "two"
got: "one" (using ==)
AFAIK,let() 的值将在同一示例中的多个调用中缓存,但不会跨示例缓存。所以不太确定为什么在使用 before(:all) 时它会失败第二个示例。
我正在使用 ruby 1.9.2p180 和 rspec 2.6.4