Intereting Posts
Пользовательские типы сообщений – используйте post_id в структуре permalink при использовании has_archive => true Передача файла вместо страницы wordpress Дайте дополнительный пост-мета в RSS-каналы Плагин jQuery для аккордеона не будет работать после использования в WP Изменить запрос на edit.php Заменить меню с помощью виджета или файла настраиваемого шаблона Add_image_size не обрезается Сортировка сообщений по дате пользовательского поля? сайт wordpress в локальном тесте, домашняя страница может быть обычным доступом, другие страницы непосредственно показывают интерфейс wampserver, как это сделать? Как отменить навигацию в конце сообщения Как получить последний URL моего блога? должность категории в wp_insert_post 301 перенаправление для конвертированного типа сообщения Как запросить базу данных для сообщений с определенным термином таксономии Список всех возможностей в раскрывающемся списке возвращает boolean

Как инициализировать что-либо в модульном тесте перед вызовом 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, прежде чем она будет загружена для тестов.