po szyderczy obiekt PDO tak:PDO atrapa obiektu brakuje getConnection
class AdProvidersTest extends PHPUnit_Framework_TestCase
{
public function dataProvider()
{
$providers = array (
array (1, '1st', 'desc_1', 101),
array (2, '2nd', 'desc_2', 202),
array (3, '3rd', 'desc_3', 303)
);
return $providers;
}
/**
* @dataProvider dataProvider
*/
public function testAdProviders_getConnection($id, $name, $desc, $account_id)
{
$data = array (
array (
'id' => $id,
'name' => $name,
'desc' => $desc,
'account_id' => $account_id,
)
);
$stmt = $this->getMock('PDOStatement', array ('execute','fetchAll'));
$stmt->expects($this->any())
->method('execute')
->will($this->returnValue(true));
$stmt->expects($this->any())
->method('fetchAll')
->will($this->returnValue($data));
$pdo = $this->getMock('PDO', array('prepare'),
array('sqlite:dbname=:memory'),'PDOMock_' . uniqid(),true);
$pdo->expects($this->any())
->method('prepare')
->will($this->returnValue($stmt));
}
}
chcę przetestować połączenie przy użyciu tej funkcji:
function getDbh()
{
if ($this->db === null){
$this->db = Slim::getInstance()->db;
}
return $this->db->getConnection();
}
ale po skonfigurowaniu bazy danych za pomocą makiety PDO í napotkasz ten błąd, próbując uzyskać połączenie:
PHP Fatal error: Call to undefined method AdProvidersTest::getMockConnection() in /home/al/adserver/adserver/test/classes/AdProvidersTest.php on line 48
czy istnieje sposób na dodanie tego getConnection
funkcja do wyśmiewanej ChNP?
Kiedy wywoływane jest 'getMockConnections()'? Metoda po prostu nie istnieje, ale nie widzę nigdzie w twoim kodzie, gdy zostanie wywołana. Czy zawierałeś tutaj cały kod źródłowy? –
'getMockConnections()' ?? Szukałem i nie mogłem znaleźć żadnej dokumentacji na ten temat, czy możesz wyjaśnić lub odwołać? mówiłem o 'getConnection()' wewnątrz 'getDbh()' –
Po przeczytaniu błędu zobaczysz, że nie można znaleźć metody, którą próbujesz wywołać. Więc przypuszczam, że musisz stworzyć tę metodę. Z drugiej strony, nie widzę nawet, skąd się go woła. Nie jestem zaznajomiony z klasami/API, których używasz, może musisz przyjrzeć się bliżej ich dokumentom. –