Твърде много връзки по време на тестване на единица

Имам проект с много тестове като клас

class MyTest extends BaseTestCase
{
    public function __construct() 
    {
        parent::__construct();
        $this->em = $this->get('doctrine')->getManager();
    }
    public function setUp() {

        $this->init();

        //load sql data for the tests
        $path = $this->get('kernel')->locateResource('@Bundle/Data/Test.sql');
        $content_file_sql_data = file_get_contents($path);
        $stmt = $this->em->getConnection()->prepare($content_file_sql_data);
        $stmt->execute();
        $stmt->closeCursor();
    }
        /*
         *   Then we do a lot of tests using the database
         */
}

Всички те разширяват моя BaseTestCase:

abstract class BaseTestCase extends \PHPUnit_Framework_TestCase {

protected $_container;
protected $kernel;

public function __construct() {

  parent::__construct();
  $this->kernel = new \AppKernel("test", true);
  $this->kernel->boot();
  $this->_container = $this->kernel->getContainer();

  $this->init();
}

//empty the database before each test class
public function init() {

  $this->_application = new Application($this->kernel);
  $this->_application->setAutoExit(false);
  //rebuild and empty the database
  $this->runConsole("doctrine:schema:drop", array("--force" => true));
  $this->runConsole("doctrine:schema:create");

}

Тъй като имам много тестове, наскоро получих някои грешки PDOException: SQLSTATE[08004] [1040] Too many connections. Сякаш phpunit никога не затваря връзката с база данни и около 100 теста получавам тази грешка за всички останали тестове.

Как мога да го поправя?

Опитах се да поставя последен тест, правейки $this->em->close() в края на всеки тестов клас, но не го реши

Малко допълнителна информация: Почти съм сигурен, че нямам проблем с ЕДИН тест, защото ако променя реда на пакета от тестове, грешката се появява около същия брой преминати класове тестове


person goto    schedule 17.01.2014    source източник
comment
EM няма да затвори връзката при затваряне на метода. stackoverflow.com/questions/7134469/doctrine-2-close-connection   -  person Josef Cech    schedule 21.01.2014
comment
Имах подобен проблем stackoverflow.com/questions/24657671/ Може би сте намерили някакво решение?   -  person zIs    schedule 18.07.2014


Отговори (1)


Моето решение беше да отменя метода на изключване в моя клас Bundle:

public function shutdown()
{
    if ('test' == $this->container->getParameter('kernel.environment')) {
        /* @var EntityManager $em */
        $em = $this->container->get('doctrine.orm.default_entity_manager');
        $em->getConnection()->close();
    }
}
person munkie    schedule 10.06.2014