tgoop.com/phpproglib/4957
Last Update:
Как обновить устаревшую функцию PHPUnit withConsecutive()
В PHPUnit 9 метод withConsecutive()
был объявлен устаревшим, а в PHPUnit 10 — удалён, что вызвало множество вопросов на форумах и в проектах. Это изменение оказалось неудобным для разработчиков, так как прямой замены для метода не предусмотрено, и обновление зачастую требует много времени. Однако существует способ заменить withConsecutive()
, который делает тесты более гибкими и читаемыми.
Метод withConsecutive()
использовался для проверки параметров вызова метода в разном порядке. Например, при первом вызове ожидался один набор параметров, при втором — другой. Однако замена его с помощью метода willReturnCallback()
позволяет использовать более гибкий подход. В новом коде параметры проверяются в переданном в willReturnCallback()
анонимном методе, где также можно отслеживать номер вызова.
Для этого используется объект InvokedCount
, который увеличивает значение с каждым вызовом. Мы можем проверять параметры по вызовам, используя метод getInvocationCount()
(в PHPUnit 10 переименованный в numberOfInvocations()
).
Преимущества перехода на willReturnCallback()
включают:
🔸улучшенную читаемость кода и простоту его поддержки;
🔸возможность добавлять любые проверки и возвращаемые значения прямо в теле функции;
🔸независимость от особенностей реализации PHPUnit, что упрощает переход на будущие версии.
Кроме того, с использованием обычного PHP-кода можно легко внедрять в тесты необходимые исключения, возвращаемые значения и прочие проверки. Такой подход делает тесты проще и гибче, а код становится более поддерживаемым.
BY Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Share with your friend now:
tgoop.com/phpproglib/4957