0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Каждую проверку, которую мы написали для функции capitalize(), в тестировании принято называть<strong>утверждением</strong>(<em>assert</em>).</p>
1
<p>Каждую проверку, которую мы написали для функции capitalize(), в тестировании принято называть<strong>утверждением</strong>(<em>assert</em>).</p>
2
<p>Утверждения - это ключевая часть тестов. Именно они проверяют функциональность кода:</p>
2
<p>Утверждения - это ключевая часть тестов. Именно они проверяют функциональность кода:</p>
3
<p>Можно заметить, что все проверки строятся одинаковым способом:<strong>условие => исключение</strong>. PHP внутри себя содержит конструкцию assert(), которая упрощает написание проверок:</p>
3
<p>Можно заметить, что все проверки строятся одинаковым способом:<strong>условие => исключение</strong>. PHP внутри себя содержит конструкцию assert(), которая упрощает написание проверок:</p>
4
<p>Конструкция assert(true) означает положительный результат, а assert(false) говорит об ошибке. Последний вариант выбрасывает исключение с таким сообщением:</p>
4
<p>Конструкция assert(true) означает положительный результат, а assert(false) говорит об ошибке. Последний вариант выбрасывает исключение с таким сообщением:</p>
5
<p>Это сообщение можно перевести так: "Ожидалось, что значением выражения будет истина, но оказалось, что это ложь". Кроме сообщения, выводится<strong>бэктрейс</strong>, по которому можно найти сработавшее утверждение:</p>
5
<p>Это сообщение можно перевести так: "Ожидалось, что значением выражения будет истина, но оказалось, что это ложь". Кроме сообщения, выводится<strong>бэктрейс</strong>, по которому можно найти сработавшее утверждение:</p>
6
<p>В целом, assert() сделал наш код короче и проще для восприятия. Положительная проверка смотрится естественнее, потому что это то, что мы ожидаем.</p>
6
<p>В целом, assert() сделал наш код короче и проще для восприятия. Положительная проверка смотрится естественнее, потому что это то, что мы ожидаем.</p>
7
<p>С другой стороны, вывод сообщения об ошибке крайне неинформативный. Для примера попробуем понять, что не так в коде ниже:</p>
7
<p>С другой стороны, вывод сообщения об ошибке крайне неинформативный. Для примера попробуем понять, что не так в коде ниже:</p>
8
<p>Единственный способ понять, что произошло - открывать код с упавшим утверждением и отлаживать его, выводя значения переменных. Это пытаются исправить с помощью<a>webmozart/assert</a>и других специализированных библиотек. Перепишем код выше с ее использованием:</p>
8
<p>Единственный способ понять, что произошло - открывать код с упавшим утверждением и отлаживать его, выводя значения переменных. Это пытаются исправить с помощью<a>webmozart/assert</a>и других специализированных библиотек. Перепишем код выше с ее использованием:</p>
9
<p>Синтаксис Assert::eq() означает, что перед нами класс Assert, у которого вызывается статический метод (функция) eq(). К сожалению, в PHP невозможно обойти использование классов даже в начале обучения. Сейчас просто запомните этот синтаксис, а подробнее о нем мы поговорим в курсах по ООП.</p>
9
<p>Синтаксис Assert::eq() означает, что перед нами класс Assert, у которого вызывается статический метод (функция) eq(). К сожалению, в PHP невозможно обойти использование классов даже в начале обучения. Сейчас просто запомните этот синтаксис, а подробнее о нем мы поговорим в курсах по ООП.</p>
10
<p>Вывод таких утверждений значительно понятнее:</p>
10
<p>Вывод таких утверждений значительно понятнее:</p>
11
<p>В этом выводе есть не только информация об ошибке, но и данные, которые передавались в утверждение. Такой формат упрощает анализ проблемы и ускоряет отладку.</p>
11
<p>В этом выводе есть не только информация об ошибке, но и данные, которые передавались в утверждение. Такой формат упрощает анализ проблемы и ускоряет отладку.</p>
12
<p>Для тестирования негативных сценариев предназначена функция Assert::notEq(). Она тестирует то, что значения не равны:</p>
12
<p>Для тестирования негативных сценариев предназначена функция Assert::notEq(). Она тестирует то, что значения не равны:</p>
13
<p>Библиотека<em>webmozart/assert</em>содержит несколько десятков функций-утверждений для разных ситуаций и типов данных. Умение их правильно использовать приходит с опытом и после нескольких попыток чтения документации.</p>
13
<p>Библиотека<em>webmozart/assert</em>содержит несколько десятков функций-утверждений для разных ситуаций и типов данных. Умение их правильно использовать приходит с опытом и после нескольких попыток чтения документации.</p>