TGViewer
WebDev+ | Веб-разработка WebDev+ | Веб-разработка @webdev_plus · 7.92K subscribers
Post #1531 557
Встроенные хелперы тестов, хоть и удобны, добавляют когнитивную нагрузку: логика подготовки вынесена за пределы теста, и приходится прокручивать к началу/концу файла, чтобы понять, что именно настраивается для прохождения теста.

Первый тест выглядит читаемым, но всё важное скрыто: что на самом деле создаёт makeIncompleteProfile()? Какие поля пусты? Что настраивает makeImportService()? Чему должен соответствовать замокированный lookup?

Если классы или модели должны быть в определённом состоянии для группы тестов, читателю гораздо легче понять, как создаётся объект, через фабрики и фейки, а не через уникальные вынесенные функции, разбросанные по каждому тесту.

Это, конечно, приводит к дублированию логики подготовки в каждом тесте (виден компромисс), но читать каждый тест по отдельности значительно проще, потому что весь его контекст изолирован — не нужно выходить за пределы теста в несколько мест, чтобы полностью понять, как всё настроено.

Хочу также обратить внимание на границы скриншотов (они намеренные). Они показывают, сколько контекста можно реально охватить за раз при чтении одного теста.

Когда подготовка спрятана за хелперами, тест может выглядеть чище, но читателю приходится выходить за пределы видимой области, чтобы понять состояние, которое проверяется, а затем возвращаться обратно в тест, иногда по нескольку раз.

Это разрушает ясность, которая была бы, если бы нужно было просто скроллить по вертикали, как при чтении книги.

@WebDev_Plus
More from @webdev_plus
  1. Oct 5, 2026Фронтендер психанул и написал крестики-нолики без HTML и JavaScript Вся игра работает прак…
  2. Oct 4, 2026Годный генератор CSS-паттернов для ваших проектов Тут можно быстро собирать крутые CSS-пат…
  3. Oct 4, 2026Таблица Менделеева для HTML Бесплатная интерактивная шпаргалка: теги по категориям, поиск,…
  4. Oct 3, 2026Как посмотреть SQL-запрос в Laravel Eloquent? Используйте метод toSql(), чтобы увидеть SQL…
  5. Oct 3, 2026Совет по Laravel: доступ к вложенным массивам через точечную нотацию Используйте dot notat…
  6. Oct 2, 2026Laravel: несколько счётчиков одним запросом Методы incrementEach() и decrementEach() позво…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →