Ответ 1
Интересный вопрос; что-то, о чем я хочу узнать больше... Так что выкопали немного, и вот что я раскрыл:
Руководство по стилю стиля битвы о let
и т.д.
-
В более ранней версии руководства по стилю, еще больше:
Избегайте его, пусть, пусть!, укажите, субъект и другие DSL. Предпочитайте ясность и последовательность.
-
ThoughtBot люди сделали сообщение на let name let not. См. Также ссылку в цепочке комментариев Github Commit Comment
-
В одном из своих недавних подкастов Джо Феррис, технический директор ThoughtBot, объясняет, почему не рекомендуется использовать
let
иsubject
. Посмотрите подкаст под названием Something Else Was Smellier с отметки 27 м 37 и далее в течение следующих 5 минут. -
Тестирование Anti-Pattern "Mystery Guest", подробно описанное в старом блоге ThoughtBot, является основной причиной того, почему не использовать
let
и его кузенов.
Подводя итог моему пониманию всего вышеизложенного очень кратко:
Использование
let
et al. затрудняет понимание того, что происходит в тесте на быстрый взгляд, и требует, чтобы человек проводил некоторое время при создании соединений.Запишите тесты таким образом, чтобы их было легко понять без особых усилий.
Кроме того, использование
let
либерально в тестах приводит к чрезмерному разделению среди тестов, а также делает неявнымcommon fixtures
- то есть имеет общее приспособление для начала для каждого написанного теста, даже если оно не применяется.
раньше (: все)
Аргумент против использования before(:all)
прост. Как описано в старой документации rspec:
Предупреждение. Использование before (: all) и after (: all) обычно обескураживается, потому что оно вводит зависимости между примерами. Тем не менее, это может оказаться полезным для очень дорогих операций, если вы знаете, что делаете.
before (: all) выполняется только один раз в начале примераGroup. Таким образом, существует потенциальная возможность непреднамеренно вводить зависимости между примерами. К этому также относится утверждение мысли о тестах, которое нелегко понять.
В заключение, совет для написания лучших спецификаций выглядит следующим образом:
- Напиши тесты таким образом, чтобы их было легко понять с помощью быстрого взгляда.
- Знайте, что вы делаете.