Исходный код WordPress покрыт тестами. Для тестирования PHP кода используется PHPUnit, а для тестирования JavaScript — QUnit. В данной статье рассмотрим тестирование PHP кода.
Установка тестов
- Установите PHPUnit. Инструкция по установке доступна на сайте этого фреймворка.
- Выполните команды в консоли чтобы загрузить версию WordPress для разработчиков, включающую тесты:
svn co https://develop.svn.wordpress.org/trunk/ wordpress-develop
cd wordpress-develop
Если у вас не установлена система управления версиями Subversion, вы можете скачать архив содержащий WordPress с тестами на этой странице. Это не удобно, т.к. нужно каждый раз скачивать архив чтобы иметь последнюю версию. - Создайте пустую базу данных MySQL, которая будет использоваться для тестирования. Все данные будут удалены из всех таблиц во время исполнения тестов, поэтому нельзя использовать существующую базу данных.
- Скопируйте данные из файла wp-tests-config-sample.php в новый файл wp-tests-config.php и добавьте в него данные для доступа к базе данных, созданной на предыдущем шаге.
- В корневой директории, где расположены файлы wp-tests-config.php, phpunit.xml.dist, и папка tests/, выполните команду:
phpunit
или, добавьте путь к файлу, чтобы выполнить тесты находящиеся в нем, например: phpunit tests/phpunit/tests/dependencies/styles.php
О запуске различных групп тестов можно почитать в документации.
Для каждого выполненного теста в консоли отображается один из следующих символов:
- . — тест успешно выполнен
- F — тест не выполнен успешно. Какое либо утверждение, например assertEquals ложно.
- E — тест не выполнен успешно из за ошибки в PHP коде: E_ERROR, E_WARNING, E_NOTICE
- S — тест пропущен, например, с помощью метода markTestSkipped(). Обычно это означает что тест нужен только при определенных обстоятельствах, например, когда включен режим Мультисайт. Если он выключен — тест пропускается.
- I — незаконченный тест. В нем присутствует метод markTestIncomplete() или это пустой тест без утверждений (asserts).
Устройство тестов
Классы с тестами наследуются от класса WP_UnitTestCase, который в свою очередь наследуется от класса PHPUnit_Framework_TestCase. Класс WP_UnitTestCase имеет ряд методов, упрощающих тестирование в WordPress. Например, эти методы возвращают WordPress в исходное состояние после каждого теста:
- setUp — выполняется перед каждым методом в тестовом классе
- tearDown — выполняется после каждого метода в тестовом классе
- setUpBeforeClass — выполняется перед первым методом в тестовом классе
- tearDownAfterClass после последнего метода в тестовом классе
- assertPostConditions — выполняется перед окончанием теста, перед tearDown
Фабрики
Фабрики позволяют создавать посты, комментарии, таксономии, пользователей и т.д.
// создать пользователя с ролью 'editor', вернуть идентификатор $user_id = self::factory()->user->create( array( 'role' => 'editor' ) // создать пользователя с ролью 'editor', вернуть объект класса WP_User $user = self::factory()->user->create_and_get( array( 'role' => 'editor' ) // создать 5 страниц, вернуть массив идентификаторов $post_ids = self::factory()->post->create_many( 5, array( 'post_type' => 'page' ) );
Комментариев нет:
Отправить комментарий