我已经研究这个问题好几天了,虽然很多人问这个问题,但我从来没有找到一个清晰简洁的答案。
我正在跑步:
PHP单元:3.7.21版;WordPress:3.5.1版;操作系统:Ubuntu 11.10;MySQL:5.1.69-0ubuntu0版。11.10.1 PHP:版本5.3.6-13ubuntu3。长话短说,我已经将基本的wordPress核心下载到我电脑上的一个目录中。我已经成功下载并安装了pear和phpunit。我通过在简单的php文件上编写基本测试来测试phpunit,这些文件运行良好。我的问题是当我在wordpress站点上运行phpunit时(我没有更改其核心WP文件)。
我得到错误:
“PHP致命错误:在/<;root\\u目录>/functions.PHP第779行的非成员对象上调用成员函数main()”。
此错误对应于此代码段:
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;
}
经过一番激烈的网络爬网,我发现很多人在这条线上都有错误,所以我知道有一些常见的事情,比如环境设置或我们的设置过程,导致了所有这些错误。我有一些解决方案read and tried 这对我不起作用:
更改“index.php”文件中所需的文件我已经做了5年的web开发人员,但我以前从未为我的客户使用过WordPress。一旦我能建立起这个框架,编写单元测试就很容易了;但我不知道是什么导致了这个问题。如有任何指向指南/教程或清晰解释的链接,将不胜感激。感谢您抽出时间。
--编辑--我正在运行的测试文件是:
<?php
//include PHPUnit
require_once(\'PHPUnit/Autoload.php\');
//include the code to be tested
require_once(\'../index.php\');
// extend the PHPUnit class
class StackTest extends PHPUnit_Framework_TestCase {
public function testOne(){
$this->assertTrue(TRUE);
$this->assertEquals(2,2);
$this->assertTrue(1<3);
}
}
?>
我没有使用任何WordPress特定的功能测试;我只是在不访问WordPress网站主页的情况下运行了一些基本的测试,但如果访问了主页,就会失败。还有另一个注释;我正确设置了配置文件和数据库。该网站运行得非常好,只是PHPUnit测试无法成功运行网站文件。