HTML Diff
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>условие =&gt; исключение</strong>. PHP внутри себя содержит конструкцию assert(), которая упрощает написание проверок:</p>
3 <p>Можно заметить, что все проверки строятся одинаковым способом:<strong>условие =&gt; исключение</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>