我有一個測試,有點像下面。細節並不重要,但我有一種方法需要大約10秒鐘,並在一系列測試中取回一些我想要使用的數據。數據不會更新鮮 - 我只需要一次獲取它。我對let的理解是記憶,所以我期望以下只調用一次slow_thing。但我認爲它多次被稱爲慢物。我究竟做錯了什麼?爲什麼不是rspec記憶這個?
describe 'example' do
def slow_thing
puts "CALLING ME!"
sleep(100)
end
let(:slowthing) { slow_thing }
it 'does something slow' do
expect(slowthing).to be_true
end
it 'does another slow thing' do
expect(slowthing).to be_true
end
end
當我運行測試時,我看到CALLING ME!儘可能多的我聲稱或使用緩慢的東西。
使用'前(:所有)'代替 – bjhaid