С четырех месяцев мы создаем сложное веб-приложение с Laravel 4 с хорошим охватом unit test. Теперь у нас есть 159 тестов и 592 утверждения, чтобы предотвратить регресс и позволить нам легко реорганизовать наше приложение.
Хорошая картина, но с нескольких дней у нас есть следующая ошибка в последних тестах:
PDOException: SQLSTATE[HY000] [1040] Too many connections
Причина проста: все тесты выполняются в одном процессе, а MySQL допускает только определенное количество доступа в одно и то же время. Теперь у нас слишком много тестов. Если я удалю несколько тестов в середине моего набора тестов, последние пройдут.
Решение может состоять в том, чтобы запустить PHPUnit в изоляции процессов, как в приведенной ниже конфигурации, но тесты Laravel, похоже, не запускаются так. Я получаю другую ошибку в каждом тесте:
PHPUnit_Framework_Exception: Notice: Constant LARAVEL_START already defined in /.../.../autoload.php on line 3
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="true"
stopOnFailure="false"
syntaxCheck="false"
>
</phpunit>
Итак, мой вопрос: как я могу настроить тесты Laravel для работы с processIsolation="true"
или вы видите другое решение моей проблемы?