Мне сказали, что имеет смысл использовать блок let!()
вместо блока before(:each)
. Однако я не вижу особой логики в этом. Есть ли вообще смысл делать что-то вроде примера ниже:
context 'my super context' do
let!(:something) do
Model.create(subject: "Hello", body: "World")
end
it '...' do
# We never call something
# All we want is just to evaluate and create the record
end
end
Имейте в виду, что вы вообще не будете вызывать something
нигде в этом примере. Технически я не вижу большой разницы между этим и этим, если только это не является более строгим и простым для понимания без документации, как простой английский:
context 'my super context' do
before(:each) do
Model.create(subject: "Hello", body: "World")
end
it '...' do
# We never call something
# All we want is just evaluate and create the record
end
end
Может ли кто-нибудь помочь мне понять идею правила, которое мне дали? Я могу понять, почему вы использовали бы let
вместо before(:all)
и before(:each)
с переменной внутри. Но здесь просто создается впечатление, что они просто слепо следуют фразе «используйте хелпер let вместо блока before», найденной где-то в сообщении в блоге.
Большое тебе спасибо!
let!
Я знаю разницу между let и почему вы должны использовать его вместо before. В этом суть. Я не понимаю смысла определятьlet!(:abcd) { Model.create() }
оценку кода. Он создаст запись, но никогда не вызоветabcd
позже. Я имею в виду, что вы могли бы сделать это внутри блока с таким же успехом. Разницы никакой нет, разве что второй пример понятнее и логичнее. - person rudkovskyi   schedule 30.08.2016