在我的代码中,我有一个初始化MySQLi类的文件。函数内部的全局变量值为NULL
File a
:
$db = new Database(); //MySQLi class
不管怎么说,有包括该数据库类的文件。该文件还包含其中已声明函数的其他文件。我使用global
联系$db
File b
:
function xy(){
global $db;
$sql = "..."
return $db->getArray($sql);
}
Testfile
:
require "file_a.php";
require "file_b.php";
require_once "PHPUnit/Framework/TestCase.php";
class testProblemStatistics extends PHPUnit_Framework_TestCase {
testArray(){
$this->assertTrue(array_key_exists('xy', $this->xy())
}
}
我得到:
致命错误:调用一个成员函数的getArray()上非物件
我调查:
var_dump($db);
function xy(){
global $db;
var_dump($db);
...
}
第一转储给我的的MySQLi对象,
第二个转储给我NULL
某处有问题,在FILE_B全局变量。
附加信息:我正在使用PHPUnit,并在命令提示符下运行它。在正常浏览器中一切正常。
在哪里,什么时候是$ DB的全局设置在您的测试? – jpic 2012-03-12 15:11:04
$ db不在测试本身内部,它必须被测试的文件内部。 – Josef 2012-03-12 15:20:49
**和**何时初始化? :)无论如何,你是否尝试我的答案? – jpic 2012-03-12 17:12:24