我一直在为一个简单的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