2
它說,在 「RSpec Core 3.5」:rpsec的「讓」如何使用記憶?
使用
let
定義memoized helper方法
我不覺得他們的榜樣是很清楚。他們是否說:count
的表達式僅針對一個規範進行一次評估,並且在每個規範之間再次進行評估?
我特別感興趣的是瞭解如何使用let
記憶與ActiveRecord對象一起工作。
它說,在 「RSpec Core 3.5」:rpsec的「讓」如何使用記憶?
使用
let
定義memoized helper方法
我不覺得他們的榜樣是很清楚。他們是否說:count
的表達式僅針對一個規範進行一次評估,並且在每個規範之間再次進行評估?
我特別感興趣的是瞭解如何使用let
記憶與ActiveRecord對象一起工作。
他們是否說過:count的表達式只針對一個規範評估一次 ,並且在每個規範之間再次評估一次?從docs
答案:
值將跨越多個呼叫跨越例子被緩存在相同的例子,但 沒有。
所以是的,它會被評估一次每個例子。
換句話說,該值將根據it
塊評估一次。
我發現他們爲榜樣的超級表現,請看:
$count = 0
RSpec.describe "let" do
let(:count) { $count += 1 }
# count will not change no matter how many times we reference it in this it block
it "memoizes the value" do
expect(count).to eq(1) # evaluated (set to 1)
expect(count).to eq(1) # did not change (still 1)
end
# count will be set to 2 and remain 2 untill the end of the block
it "is not cached across examples" do
expect(count).to eq(2) # evaluated in new it block
end
end
我們memoizes the value
例如引用count
的兩倍,但它是隻計算一次。
歡迎來到Stack Overflow。請閱讀「[問]」,特別是「[如何以智能方式提出問題](http://catb.org/esr/faqs/smart-questions.html)」。語法對Stack Overflow很重要。我們正在創建參考書,因此請儘量使用拼寫檢查和正確的格式。 –