Учитывая количество инструментов тестирования и ресурсов доступных разработчикам PHP, неудивительно, почему так много разработчиков чувствуют себя подавленными. В этой серии мы изучим все аспекты тестирования PHPUnit, работая в вашем знакомым фреймворком приложений Laravel.
Обзор уроков курса "Тестирование Laravel"
- Введение в тестирование приложений
Итак, у вас есть существующее приложение, и вы бы хотели начать писать тесты для него. Отлично! Но тогда вы просматриваете учебные руководства по тестированию модулей в Интернете, и вы понимаете, что ни одно из них не применимо к тому, что вы на самом деле хотите проверить. Как вы используете PHPUnit для фактического попадания на веб-страницу и понимаете что определенный текст существует на странице?
- Ввод в тестирование приложений
На первом уроке этой серии мы рассмотрели форму zoomed-out тестирования, когда мы запускаем роут, нажимаем на контроллер и делаем утверждения против представления. Теперь давайте увеличим масштаб и сосредоточимся на основном процессе тестирования модулей.
Как насчет того, когда вам нужно проверить связанные классы. Например, Заказ, состоящий из Продуктов. Ну, процесс практически такой же. Не переусердствуйте.
Если вы надеетесь написать тесты для своих проектов Laravel, то одна из первых вещей, которые вы хотите протестировать - Eloquent. Позвольте мне показать вам лучший рабочий процесс.
- Тестирования подключения к БД
До сих пор мы использовали нашу основную локальную базу данных для тестирования. Но это не идеально. Давайте вместо этого создадим новую базу данных специально для PHPUnit. В этом процессе нам также потребуется создать новый тип подключения, чтобы мы могли инициировать наши миграции, если это необходимо.
- Тестирование Collaborators
Если у нас есть две модели Eloquent и нам нужно чтобы они взаимодействовали друг с другом и эти взаимодействия создают и изменяют записи базы данных ... ну как мы можем это протестировать? Давайте ответим на этот вопрос, пока продолжаем наш обзор TDD, PHPUnit, guards и тд.
Если вы хотите попробовать свои силы в домашней задаче, назначенной в конце видео, вот ссылка на исходный код.
В предыдущем эпизоде в конце - я назначил небольшую домашнюю работу: добавьте две небольшие части функциональности в свой класс Team. В этом уроке мы рассмотрим одно (из многих) решений.
- Регрессионное тестирование
Набор тестов, который возвращает зеленый цвет, не обязательно означает что в приложении нет ошибок. В таких ситуациях мы можем написать регрессионный тест, чтобы точно определить ошибку и обеспечить исправление.
- "Liking" a Model With TDD
Используя пример пользователя, обладающего способностью любить любой тип ресурса (комментарии, должность, статус и тд.)... Как мы можем использовать TDD для разработки этого API и рабочего процесса с нуля?
Потребуем некоторое время, чтобы реорганизовать те тесты, которые мы писали в предыдущем уроке. Мы рассмотрим вспомогательные функции глобального тестирования и многоразовый метод signIn.
- Разработка Fluent API с TDD
В этом уроке мы создадим плавную оболочку вокруг запутанного синтаксиса регулярных выражений (используя этот проект в качестве вдохновения). Как и во всех других уроках этой серии, основной процесс остается тем же: проектируйте API, который вы хотите (через тесты), а затем создайте необходимый код, чтобы он работал!
Посмотрите источник этого урока на GitHub.
- Тестирование email с помощью пользовательских утверждений
Итак, вам нужно написать некоторые утверждения, чтобы обеспечить доставку необходимого электронного письма, когда вы нажмете на конкретный маршрут? Ну, на момент написания этой статьи, Laravel не предлагает такую функциональность из коробки. Давайте раскроем наши рукава и научимся писать и организовывать собственный набор утверждений для этой самой задачи!
В то время как мы фокусировали много энергии на внешнем тестировании, реальность такова, что когда вы копаете глубже к unit level, вам часто нужно создавать макетные объекты, заглушки и многое другое. В этом уроке мы узнаем, как использовать превосходную структуру Prophecy, встроенную в PHPUnit.
- Рабочий процесс исправления ошибок
Как вы уже узнали в этой серии, тесты особенно полезны для обработки регрессий. В этом уроке мы определим ошибку в реальной базе кода, напишем тест, чтобы воспроизвести его, исправить, а затем подтолкнуть наш обновленный код к выпуску.