【发布时间】:2013-07-24 00:16:49
【问题描述】:
四个月以来,我们使用 Laravel 4 构建了一个复杂的 Web 应用程序,具有良好的单元测试覆盖率。现在我们有 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" 或者您是否看到解决我问题的其他方法?
【问题讨论】:
-
这个问题你解决了吗?
-
您可以查看此讨论:plus.google.com/107528973720672293459/posts/bBC5CdKPFQ4 了解更多信息。基本上,我无法将 Laravel 和 PHPUnit 一起配置为与 processIsolation 一起使用,所以我只需在 MySQL 配置中将 max_connections 设置为 1000。不是很漂亮,但很管用。
标签: mysql phpunit laravel laravel-4