Говорят, что выражение для: 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
Мы ссылаемся count
дважды в memoizes the value
примере, но она была оценена только один раз.
Добро пожаловать в Переполнение стека. Пожалуйста, прочитайте «[ask]», особенно «[Как задавать вопросы Smart Way] (http://catb.org/esr/faqs/smart-questions.html)». Грамматика важна для переполнения стека. Мы создаем справочник, поэтому, пожалуйста, постарайтесь использовать проверку орфографии и правильное форматирование. –