【问题标题】:Testing 'pluggable' function calls clashes for WordPress and unit testing测试 WordPress 和单元测试的“可插入”函数调用冲突
【发布时间】:2010-02-13 07:50:06
【问题描述】:

WordPress 有一组称为可插入函数的函数;基本上,它们被设计为被新功能覆盖,但有一个问题 - 如果另一个插件首先定义该功能,则其他一些较低优先级的插件不能......(否则会出现致命错误)。因此,像这样的“包含警卫”是很常见的

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

这避免了致命错误,但它会导致插件神秘地失败......

通常会尝试避免插件冲突。但是,一个问题是您不知道插件是否会发生冲突,而且有时对于功能丰富的插件来说很难避免这种情况。

问题是(很抱歉花了这么长时间来设定前提)您如何检测冲突?一直是无形的失败,因为函数存在,没有报错,结果却是“哎,这个插件坏了!”

如果定义了函数,我可以回显某些内容,但是如何将其转换为单元测试?每当加载页面时,WordPress 都会包含所有插件的头文件。如何以编程方式确定 Wordpress 已加载的可插入功能是我想要的功能?

【问题讨论】:

    标签: php unit-testing wordpress


    【解决方案1】:

    唯一想到的就是在你的应用中标记函数声明失败并测试标记:

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

    然后用defined进行测试:

    if(defined('MY_PLUGIN_NEW_USER_NOTIFICATION_DECLARATION_FAILED'))
    {
     // fail
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-09
      • 2012-04-04
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多