gpt4 book ai didi

ruby - let() 值在 before( :all) is used?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:17 27 4
gpt4 key购买 nike

我有一个 spec 文件,如下所示:

# 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 ==)

据我所知,let() 的值将在同一示例中的多个调用中缓存,但不会跨示例缓存。所以不太确定为什么在使用 before(:all) 时第二个示例失败。

我正在使用 ruby​​ 1.9.2p180 和 rspec 2.6.4

最佳答案

这是 a known problem与 rspec:

lets are not designed to be used with before(:all) blocks

(Quoting 来自 yet another ticket 的 rspec 贡献者 myronmarston 关于这个问题(这似乎与您在此处描述的行为非常相似))。

关于ruby - let() 值在 before( :all) is used?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004965/

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