Тестирование подключаемой функции вызывает конфликты для WordPress и модульного тестирования - PullRequest
0 голосов
/ 13 февраля 2010

WordPress имеет группу функций, вызывающих подключаемые функции; в основном, они предназначены для переопределения для новой функциональности, но есть одна загвоздка - если другой плагин определит эту функцию первым, какой-то другой плагин с более низким приоритетом не сможет ... (иначе будет фатальная ошибка). Следовательно, принято включать «охранников», подобных этому

if (!function_exists('wp_new_user_notification'))
{ 
   function wp_new_user_notification($userid, $blah='')
   {
   }
}

Это позволяет избежать фатальных ошибок, но приводит к загадочным сбоям плагинов ...

Обычно стараются избегать столкновения плагинов. Одна из проблем, однако, заключается в том, что вы не представляете, конфликтует ли плагин, и иногда трудно избежать этого для функционально-упакованных плагинов.

Вопрос в том (извините, что так долго пытался установить предпосылку), как вы обнаруживаете столкновения? Это всегда невидимый сбой, потому что функция существует, ошибки не выдается, но результат «Эй, этот плагин сломан!»

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

1 Ответ

0 голосов
/ 13 февраля 2010

Единственное, что приходит на ум, - отметить ошибку объявления функции в вашем приложении и проверить маркер:

if (!function_exists('wp_new_user_notification'))
{ 
   function wp_new_user_notification($userid, $blah='')
   {
   }
}
else
{
  define('MY_PLUGIN_NEW_USER_NOTIFICATION_DECLARATION_FAILED', true);
}

, а затем проверка с определенным :

if(defined('MY_PLUGIN_NEW_USER_NOTIFICATION_DECLARATION_FAILED'))
{
 // fail
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...