TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #4957 2.87K
Как обновить устаревшую функцию PHPUnit withConsecutive()

В PHPUnit 9 метод withConsecutive() был объявлен устаревшим, а в PHPUnit 10 — удалён, что вызвало множество вопросов на форумах и в проектах. Это изменение оказалось неудобным для разработчиков, так как прямой замены для метода не предусмотрено, и обновление зачастую требует много времени. Однако существует способ заменить withConsecutive(), который делает тесты более гибкими и читаемыми.

Метод withConsecutive() использовался для проверки параметров вызова метода в разном порядке. Например, при первом вызове ожидался один набор параметров, при втором — другой. Однако замена его с помощью метода willReturnCallback() позволяет использовать более гибкий подход. В новом коде параметры проверяются в переданном в willReturnCallback() анонимном методе, где также можно отслеживать номер вызова.

Для этого используется объект InvokedCount, который увеличивает значение с каждым вызовом. Мы можем проверять параметры по вызовам, используя метод getInvocationCount() (в PHPUnit 10 переименованный в numberOfInvocations()).

Преимущества перехода на willReturnCallback() включают:

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

Кроме того, с использованием обычного PHP-кода можно легко внедрять в тесты необходимые исключения, возвращаемые значения и прочие проверки. Такой подход делает тесты проще и гибче, а код становится более поддерживаемым.
  • 🎉 5
  • ❤ 2
  • 👍 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
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 →