PHP: Продвинутое тестирование
Теория: Тестирование ошибок
Основные тесты, которые нужно писать, это тесты на успешные сценарии работы. Но в некоторых ситуациях код должен возвращать ошибки и их тоже бывает нужно проверять. Под ошибками понимаются ситуации, в которых код выбрасывает исключение. В чём их особенность? Посмотрите на тест:
Этот код пытается протестировать ситуацию, при которой функция functionWithException() выбрасывает исключение, если ей передать 0. Как вы думаете, этот тест проверит, что функция действительно порождает исключение? Правильный ответ – нет. Если функция functionWithException() не выбросит исключение, то тест пройдёт, так как код не попадёт в блок catch.
В PHPUnit есть утверждение, которое самостоятельно отлавливает исключение и проверяет, что оно вообще было сгенерировано.
В дополнение к методу expectException() существуют методы expectExceptionCode(), expectExceptionMessage() и expectExceptionMessageMatches() для более точечного анализа перехваченного исключения.
.png)


