dopo beffarda oggetto PDO in questo modo:DOP oggetto fittizio dispersi 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));
}
}
Voglio testare la connessione utilizzando questa funzione:
function getDbh()
{
if ($this->db === null){
$this->db = Slim::getInstance()->db;
}
return $this->db->getConnection();
}
ma dopo aver impostato il database utilizzando la DOP finto i ottenere questo errore quando si tenta di ottenere la connessione:
PHP Fatal error: Call to undefined method AdProvidersTest::getMockConnection() in /home/al/adserver/adserver/test/classes/AdProvidersTest.php on line 48
c'è un modo per aggiungere questoFunzioneper il PDO deriso?
Quando viene chiamato 'getMockConnections()'? Il metodo semplicemente non esiste ma non vedo nulla nel tuo codice quando viene chiamato. Hai incluso tutto il codice sorgente qui? –
'getMockConnections()' ?? ho guardato e non ho trovato alcuna documentazione al riguardo, puoi spiegare o fare riferimento? stavo parlando di 'getConnection()' all'interno di 'getDbh()' –
Se leggi l'errore vedrai che non è possibile trovare un metodo che stai tentando di chiamare. Quindi suppongo tu abbia bisogno di creare quel metodo. D'altra parte, non vedo nemmeno da dove viene chiamato. Non ho familiarità con le classi/API che stai utilizzando, forse hai bisogno di guardare più da vicino i loro documenti –