TGViewer
Одержимый кодом🔥 Одержимый кодом🔥 @cutcode · 343 subscribers
Post #59 517
Pest vs PHPUnit: Моя история выбора🧐

История нашего знакомства с Pest началась с обзора на моем канале. Тогда я еще не вполне осознавал все преимущества этого подхода, но меня впечатлило отсутствие классов, что значительно сокращало тестовые файлы. Также привлекли удобный fluent-интерфейс для написания тестов, функциональный подход и возможность группировки тестов для удобного вызова.

Мы решили рискнуть и перевести нашу open-source админку MoonShine с PHPUnit на Pest. В процессе возникли вопросы, о которых поговорим позже, но мы решили идти до конца, полагая, что это дело привычки: нужно просто принять новый, красивый подход.

Не буду ходить вокруг да около и сразу скажу главную мысль итогового обзора:

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

Pest как раз такая библиотека, и сейчас вы поймете почему.

Мы используем динамические свойства внутри функций (под капотом магические __get, __set, но сути не меняет). Классов нет, но создаются свойства, которые IDE не может определить между тестовыми функциями. Даже с плагином свойства подсвечиваются как нечто инородное, что со временем начинает резать глаз.

Подход через fluent от функции expect в реальном проекте выглядит так (смотреть обложку поста).

Постоянно хочется разбить на несколько expect, но плагин настаивает на соблюдении концепции и использовании and.

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

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

Мы решили вернуться к PHPUnit и отказаться от Pest. Я рад, что мой курс по изучению продвинутых методик Laravel на примере интернет-магазина, часть 2 (API), задержался, так как планировал делать его с Pest. Теперь понимаю, что не стоит.

Однако, несмотря на этот негативный опыт, я не жалею, что попробовал Pest. Любой опыт, даже неудачный, позволяет лучше понимать свои инструменты и делать более осознанный выбор в будущем. Подробнее мысли изложил в ролике - https://youtu.be/1tWhPTmLW34
  • 👍 12
  • ❤ 3
  • 🔥 1
More from @cutcode
  1. Sep 22, 2026Post #131
  2. Sep 11, 2026Но все еще скидка 15% по промокоду CUTCODE-26!
  3. Sep 11, 2026Пыхник’26 — 2 октября расскажу про осознанное использование AI. Скидка 15% по промокоду CU…
  4. Sep 11, 2026Теперь документация по Laravel пишется для ИИ-агентов. И скорей всего ИИ-агентами 😁
  5. Sep 11, 2026Топ-1 преимуществом Laravel всегда была документация. Теперь она будет для агентов. Помяне…
  6. Sep 9, 2026Пыхник’26 — целая неделя PHP! С 28 сентября по 2 октября пройдёт Пыхник’26 — онлайн-конфер…
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 →