ZF2: Doctrine und PHPUnit

Beim testen von Anwendungen mit Doctrine und PHPUnit kann es vorkommen, dass zu viele Verbindungen geöffnet werden, wenn man ohne Datenbank Mockup arbeitet. Dies passiert dadurch, dass Doctrine persistente Verbindungen nutzt und diese eine gewisse Zeit geöffnet bleiben.

In meinem Fall hatte PDO folgende Exception geworfen:

PDOException: SQLSTATE[08004] [1040] Too many connections

Um dies bei UnitTests zu vermeiden, bietet es sich an im tearDown() die Verbindung manuell zu schließen:

<?php
namespace ApplicationTest\Controller;
 
use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase as BaseClass;
 
class IndexControllerTest extends BaseClass
{
 
    /**
     * .....
     */
 
    /**
     * Close doctrine database connections
     */
    public function tearDown()
    {
        $this->getApplicationServiceLocator()->get('doctrine.connection.orm_default')->close();
        parent::tearDown();
    }
 
    /**
     * .....
     */
 
}

Kommentar verfassen