2015-08-12 7 views
6

nach wie dieses Objekt PDO spöttisch:PDO Mock-Objekt fehlt 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)); 


    } 
} 

i die Verbindung mit dieser Funktion testen wollen:

 function getDbh() 
     { 
     if ($this->db === null){ 
      $this->db = Slim::getInstance()->db; 
     } 
     return $this->db->getConnection(); 
     } 

aber nach der Datenbank unter Verwendung der gU Mock i Einrichtung Erhalten Sie diesen Fehler beim Versuch, die Verbindung zu erhalten:

PHP Fatal error: Call to undefined method AdProvidersTest::getMockConnection() in /home/al/adserver/adserver/test/classes/AdProvidersTest.php on line 48 

gibt es eine Möglichkeit, diesehinzuzufügenFunktion zum verspotteten PDO?

+1

Wann wird 'getMockConnections()' aufgerufen? Die Methode existiert einfach nicht, aber ich sehe nirgendwo in Ihrem Code, wenn es aufgerufen wird. Hast du den gesamten Quellcode hier aufgenommen? –

+0

'getMockConnections()' ?? Ich schaute und konnte keine Dokumentation darüber finden, können Sie bitte erklären oder verweisen? Ich habe über 'getConnection()' innerhalb 'getDbh()' gesprochen. –

+0

Wenn Sie den Fehler lesen, werden Sie sehen, dass es eine Methode nicht finden kann, die Sie versuchen, anzurufen. Ich nehme an, dass Sie diese Methode erstellen müssen. Auf der anderen Seite sehe ich nicht einmal, von wo aus es gerufen wird. Ich bin nicht vertraut mit den Klassen/API, die Sie verwenden, vielleicht müssen Sie näher auf ihre Dokumente –

Antwort

1

Ihre Fehlermeldung besagt, dass 48 in AdProvidersTest.php Zeile ist der Aufruf der Methode getMockConnection() im class AdProvidersTest und dass Sie haben nicht die MethodegetMockConnection() in class AdProvidersTest

Ist diese Hilfe Sie auf Ihre Antwort verengen in definiert?

0

Look-Methode getMock() innerhalb muss getMockConnection() aufrufen.