PHP: Автоматическое тестирование
2026-02-26 18:59 Diff

Любое утверждение можно превратить в проверку на истинность:

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

Массивы

Рассмотрим проверки для массивов:

Строки

Перейдем к проверкам для строк:

Печать на экран

Иногда результат работы кода доступен только как вывод в консоль. В таком случае не существует никакого возврата значения из функции, которое можно сравнить с ожидаемым. Для таких ситуаций в PHPUnit есть несколько специализированных утверждений. Они перехватывают вывод (STDOUT) и дают возможность проверить его:

В этом коде expectOutputString() проверяет точное соответствие, что не всегда удобно. Если хочется проверить только часть вывода, то можно воспользоваться другим способом:

Ошибки

Обработка ошибочных ситуаций — это тоже логика, которую нужно программировать и тестировать. Когда что-то идет не так, вызываемый код может выбрасывать исключения:

Исключения не работают как возврат из функций. Вместо этого, они поднимаются по стеку вызовов, до тех пор пока их не перехватят. Поэтому в PHPUnit для работы с исключениями используется специальное утверждение expectException():

Очень важно вызывать expectException() до кода, который выбрасывает исключение. Если исключение выброшено, то весь код после него не вызывается.

Это далеко не все утверждения, которые есть в PHPUnit. Более того, PHPUnit может расширяться собственными проверками. В целом, вам придется постоянно заглядывать в документацию, чтобы вспомнить, что там есть.