【问题标题】:Why Can't PHPUnit UnitTest My Wordpress Website为什么 PHPUnit 不能对我的 Wordpress 网站进行单元测试
【发布时间】:2013-06-11 11:50:43
【问题描述】:

我已经研究这个问题好几天了,虽然很多人问这个问题,但我从来没有找到一个清晰简洁的答案。

我正在跑步:

  • PHP 单元:版本 3.7.21
  • WordPress:版本 3.5.1
  • 操作系统:Ubuntu 11.10
  • MySQL:版本 5.1.69-0ubuntu0.11.10.1
  • PHP:版本 5.3.6-13ubuntu3.10

长话短说,我已将基本的 wordPress 核心下载到我计算机上的目录中。我已经成功下载并安装了 pear 和 phpunit。我通过对运行良好的简单 php 文件编写基本测试来测试 phpunit。我的问题是当我在 wordpress 网站上运行 phpunit 时(我没有更改其核心 WP 文件)。

我得到错误:

"PHP 致命错误:在非成员上调用成员函数 main() //functions.php 中第 779 行的对象"。

此错误对应此代码段:

function wp( $query_vars = '' ) {
    global $wp, $wp_query, $wp_the_query;
    $wp->main( $query_vars ); // Line 779

    if ( !isset($wp_the_query) )
        $wp_the_query = $wp_query;
}

经过一番激烈的互联网爬网后,我发现很多人在这一行有错误,所以我知道有一些一般性的东西,比如环境设置或我们的设置过程给了我们所有这些错误。

阅读并尝试过的一些解决方案对我不起作用:

  • 在“index.php”文件中更改所需文件。
  • 在“index.php”文件的头部上方放置“load.php”的要求。
  • 重新安装 WordPress
  • 更改引导程序和 phpunit 环境。

我已经做了 5 年的网络开发人员,但我以前从未为我的一个客户使用过 WordPress。一旦我能完成这个设置,编写单元测试就会很容易;但我不知道是什么导致了这个问题。任何指向指南/教程或清晰解释的链接将不胜感激。感谢您的宝贵时间。

【问题讨论】:

    标签: wordpress unit-testing testing phpunit


    【解决方案1】:

    有一个 WordPress 测试套件,您的问题表明您可能错过了:

    http://make.wordpress.org/core/handbook/automated-testing/

    请记住,在突出显示的情况下,WP 的设计方式并非使其或与之相关的任何东西都可以或应该进行测试。 作案手法多年来一直是提交代码而不进行任何测试。诚然,它多年来一直在改善,尽管速度很慢。

    相关问题:

    What are the best practices of custom application Wordpress development?

    WordPress Plugin: How do I avoid "tight coupling"?

    【讨论】:

    • 谢谢丹尼斯,我之前尝试过该指南,但它对我不起作用。但是知道经过进一步研究后这种方法应该有效,我发现了这个链接gist.github.com/xentek/3482677。在这两个链接之间,我想通了一切。也只是一个简单的问题,为什么 WP 是这样设计的,如果发生错误,我们最好只修复错误,而不是为我们的 WordPress 网站设计单元测试的繁琐工作?
    • 坦率地说,WP 是由大学生创建的,他们分叉了其他大学生创建的软件。与例如相反Drupal(正在 Drupal8 中切换到 Symfony2 组件),它吸引了少数习惯于企业软件的开发人员。随着岁月的流逝,它正在改善;只是没有一些人希望的那么快——主要是因为他们不想破坏大量的遗留黑客、插件、主题和网站。
    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2013-09-13
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多