在我的代碼中,我有一個初始化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