Intereting Posts
Как это «дорого» – это функция? Форма поиска WordPress Issue | Ошибка ввода URL-адреса. | Указание на неправильный URL Создание пользовательского меню для настраиваемой темы Безопасность – инъекция инъекций шорткода Где найти эту нерабочую ссылку, чтобы ее удалить Пользовательский параметр темы не отображает сохраненные значения в wp_head (CSS) Как создать эскизы с фиксированной шириной, поэтому все они будут иметь одинаковую ширину? Устаревшая функция get_user_by_email ($ email) Получить подкатегории с плагином JSON API Удаление алфавитного порядка из категорий wordpress сообщение / содержание страницы Список категорий столбца иерархически? Могу ли я динамически создавать повторяющиеся поля с помощью API настроек? Штрих-коды: на короткое замыкание короткого кода / изменения Как сохранить изменения в функции functions.php темы в разных обновлениях?

Как инициализировать что-либо в модульном тесте перед вызовом init?

У меня есть простой блок PHP, написанный для WordPress, и вы хотите инициализировать код перед тем, как вызывается основное действие init из плагина, который я хочу протестировать, например

class MyPlugin_Test_Example extends WP_UnitTestCase { public static function setUpBeforeClass() { error_log('setUpBeforeClass'); } ... 

Например, я уже поставил оператор журнала в setUpBeforeClass , но он по-прежнему вызывается после действия «init» моего плагина.

Предположим, что действие init моего плагина нуждается в проверке, можно ли мне в любом случае проверить тестовый код?

Solutions Collecting From Web of "Как инициализировать что-либо в модульном тесте перед вызовом init?"

Вы обнаружили, что WordPress загружен – и все действия вызываются – перед запуском тестов. При загрузке WordPress можно подключиться, но это нужно сделать из файла начальной загрузки PHPUnit, а не из класса testcase. Я не знаю, как выглядит ваш загрузочный файл, поэтому я собираюсь предположить, что он похож на тот, который приведен в этом уроке . Главное, что вам нужно сделать, это загрузить файл, содержащий вспомогательные функции PHPUnit WordPress ( tests/phpunit/includes/functions.php ). Вам нужно будет включить этот файл, потому что он содержит tests_add_filter() . И это функция, которую вы можете использовать для подключения к init , например:

tests_add_filter( 'init', 'my_function_to_call' );

Функция работает так же, как функции add_filter() или add_action() . Вы не можете использовать add_action() хотя WordPress еще не загружен, и поэтому эти функции недоступны. И, как вы обнаружили, вы не можете ждать, пока загрузится WordPress, чтобы подключить вашу функцию, потому что тогда будет слишком поздно. Вот почему существует функция tests_add_filter() : поэтому вы можете подключиться к WordPress, прежде чем она будет загружена для тестов.