Intereting Posts
Пользовательский поиск по страницам в почтовом типе с мета-ключом Список пользователей WordPress с функцией поиска Как я могу отображать время минус 6 часов Изменение цветовой схемы на основе URL-адреса настраиваемый шаблон – переопределить шаблон плагина в дочерней теме – проблема со сценариями Как вы отформатируете дату как двухзначный год? (например, «10.12.10» вместо «10.12.2010») jQuery .checked пользовательские элементы wp_dropdown_categories в wordpress Текущий крюк класса в сгенерированном списке get_intermediate_image_sizes () возвращает разные значения в зависимости от is_admin () Как следует подключить session_start () при создании плагина? Woocommerce: как удалить заголовок страницы на домашней странице или странице магазина, но не на страницах категорий Как я могу получить имя пользователя и пароль из моей установки WordPress? Как динамически изменять точки текста на пользовательской странице? Отключить wordpress от включения jQuery в разделе заголовка

Что делает возможным модульные тестовые плагины?

Это скорее вопрос, связанный с теорией.

Я не смотрю на практические способы сделать это, поскольку я могу найти много примеров (официальных и не), которые, однако, не объясняют, как можно правильно создавать и запускать тесты для элементов кода, которые так много полагаются на система (WordPress) и ее функции (крючки).

Я прошу, чтобы я признал, что мне все еще не хватает общих знаний об модульном тестировании и, скорее всего, отсутствует какой-то важный момент, который, вероятно, сделает этот пост бессмысленным: я уверен, что вы сообщите мне, если это так! 🙂

Стоит также отметить, что все это вышло после прочтения « Чистого кода»: «Руководство по гибкому программному мастерству » Роберта Мартина, которое охватывает строго типизированные языки и, в частности, сосредоточено на разработке Java, но на самом деле предоставляет так много полезных советов (многие очевидны, все еще часто игнорируются), что я хочу изо всех сил применить столько, сколько могу, на свой PHP-код, включая (чистые) модульные тесты.

Итак, вернемся к сути …

Предполагается, что тестовый блок является атомарным, независимым (что означает, что он не зависит от других тестов) и максимально инкапсулируется.

Я не вижу, как это возможно в плагине WordPress, учитывая, по крайней мере, эти аспекты:

  • Сам WordPress – мне нужно создать новый экземпляр WP. Когда? Каждый раз, когда я запускаю набор тестов? В каждом отдельном тесте?
  • Крючки. Мы так сильно зависим от крючка, что я действительно не могу понять, как мы можем создать чистый и читаемый тест, не добавляя при этом весь беспорядок для обработки крючков
  • Пользовательский интерфейс. Большинство из того, что происходит в WP, связано с пользовательским интерфейсом (как задним, так и передним). Например, как бы вы проверили на странице редактирования сообщения поведение определенной кнопки (введенной плагином)? И чтобы сделать его еще более сложным, что, если эта кнопка запускает вызов ajax и что-то изменяет на странице редактирования после публикации, не перезагружая его?