我一直在爲一個簡單的Datamapper類寫一個測試,並且我知道該方法正在工作,但是測試失敗並且給我錯誤「Fatal error: Call to a member function fetchAll() on a non-object in C:\xampp\htdocs\Call log\tests\model_tests.php on line 13.
」顯然,這不可能是對,因爲我可以驗證該方法的工作原理。PHP最簡單的tomfoolery。測試不通過工作方法
這裏是它理應示數的代碼:
function all() {
$calls = $this->pdo->query('SELECT * from calls');
return $calls->fetchAll();
}
這裏是我的測試代碼:
class TestOfCallMapper extends UnitTestCase {
function testOfReturnsAll() {
$this->createSchema();
$mapper = Callmapper::getInstance();
$results = $mapper->all();
print_r($results);
}
private function createSchema() {
$mapper = CallMapper::getInstance();
$mapper->pdo->exec(file_get_contents('../database/create_schema.sql'));
}
private function destroySchema() {
$mapper = CallMapper::getInstance();
$mapper->pdo->exec(file_get_contents('../database/destroy_schema.sql'));
}
}
$test = new TestOfCallMapper('Test of CallMapper Methods');
$test->run(new HTMLReporter());
如果我這樣做,它工作得很好:
$mapper = CallMapper::getInstance();
$test = $mapper->all();
print_r($test->fetchAll());
請的var_dump()或print_r的()$測試,看看它是否真的是一個對象。 – oezi 2010-11-18 17:57:36
如果你把'$ results'的var_dump的結果是(var_dump會在'bool(FALSE)'的情況下輸出一些東西) – cwallenpoole 2010-11-18 18:05:25
它會更容易診斷它不會在測試頁面輸出任何東西if我嘗試print_r或var_dump $結果。在另一頁上,它輸出一個包含$ test的所有數據庫條目的數組。 – 2010-11-18 18:11:22