私のコードでは、MySQLiクラスを初期化するファイルがあります。関数内のグローバル変数の値がNULLです
File a
:
$db = new Database(); //MySQLi class
とにかく、このデータベース・クラスを含むファイルがあります。このファイルには、関数が宣言されている他のファイルも含まれています。私は$db
File b
に連絡するglobal
を使用しています:
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を第二ダンプが
何かがfile_bでグローバル変数と間違っている私にNULLを与えた、
オブジェクトくれました。
追加情報:私はPHPUnitを使用しており、コマンドプロンプトで実行しています。通常のブラウザでは、すべて正常に動作します。あなたが完全にPHPUnitのマニュアルon Global Stateを理解しなければならない
とするときは、あなたのテストで$デシベルグローバル設定? – jpic
$ dbはテスト自体の内部ではなく、テスト対象のファイルの内部にあります。 – Josef
**および**初期化はいつですか? :)とにかく、あなたは私の答えを試しましたか? – jpic