Intereting Posts
мета-запрос всегда терпит неудачу, даже если данные верны Выполнение горизонтального меню wordpress Добавление параметров экрана в настраиваемые страницы администрирования 404 перенаправление на родину Безопасно ли использовать классы, созданные WordPress? Как я могу ввести один абзац справа налево (иврит) на английскую страницу / сообщение? Не удалось получить доступ к панели администратора после обновления базы данных WordPress Добавление класса в тег тела при включенном меню Создайте single.php для определенного тега по идентификатору тега или имени Хранение массива объектов, связанных с каждым пользователем Задержка одного RSS-канала в WordPress, но не других? Обмен пользователями по нескольким сайтам, каждый из которых находится в собственной базе данных Пользовательский фильтр типа post применяется ко всем моим сообщениям Как запустить сайт WordPress через несколько ccTLD? Изменение параметров виджета с помощью функции.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, прежде чем она будет загружена для тестов.