2015-08-12 14 views
6

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?

+1

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? –

+0

'getMockConnections()' ?? ho guardato e non ho trovato alcuna documentazione al riguardo, puoi spiegare o fare riferimento? stavo parlando di 'getConnection()' all'interno di 'getDbh()' –

+0

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 –

risposta

1

vostro errore stati di segnalazione che la linea 48 in AdProvidersTest.php sta chiamando il metodo getMockConnection() nel class AdProvidersTest e che non è stata definita il metodogetMockConnection() in class AdProvidersTest

Fa questo aiuterà a restringere in sulla tua risposta?

0

Il metodo look getMock() al suo interno deve chiamare getMockConnection().

Problemi correlati