【发布时间】:2012-09-14 18:15:37
【问题描述】:
我已将我的问题缩小到一个涉及非常干净的 dbal 查询的单元测试。该查询涉及一个嵌套集,并且当我从 3 到 4 级分层类别时发生故障。执行时间方面的变化非常小。我正在使用的功能在 10 级时没有问题。但是,在 PhpUnit 中,当我运行 4 个或更多级别的测试时,我得到了一个致命错误。
*总而言之,一个查询可能比平时多花一秒钟时间或一个选项卡位更多的资源让我在PHPUnit 中获得php fatal error *
错误看起来像这样:
致命错误:在 /var/www/my-app/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/Stopwatch.php 中调用未定义的方法 Monolog\Formatter\LineFormatter::stopEvent()第 92 行
某人here 在第 92 行也遇到了 phpUnit 致命错误问题。会不会有关系??
我已经列出了一些奇怪的方法(如下)来绕过我的问题,但我仍然想知道为什么这样的基本测试似乎会导致这个问题。
- 运行 PhpUnit 并将
processIsolation设置为“true”。 - 不要在 setUpBeforeClass() 方法中访问
static::createClient();
我有一位受人尊敬的#symfony (Stof) 成员建议我似乎不正确地将 @logger 投入服务.. 但我已经确认这似乎不是通过采取我的任何服务中的记录器服务。
也许这个问题与超时有关? (错误提到stopevent 和stopwatch)。或者这个错误可能与在setUpBeforeClass()中访问$client = static::createClient();有关。然后在前面的测试中再次访问。无论如何..这让我感到困惑,据我所知,我的Symfony2(2.1 .1) 安装工作正常。
* Stopwatch.php 的第 92 行 .. github source file here *
/**
* Stops an event.
* @param string $name The event name
* @return StopwatchEvent A StopwatchEvent instance
*/
public function stop($name)
{ return end($this->activeSections)->stopEvent($name);}
【问题讨论】:
-
你能显示 Stopwatch.php 的第 92 行和之前的几行吗?
-
我在主要部分添加了第 92 行,并带有指向 github 上 Stopwatch.php 源的链接。看起来它试图表现得像秒表......致命错误是个大问题.似乎一路上没有加载某些东西,因此出错了。但是为什么修改一个非常简单的查询会影响正在加载的内容?
标签: php symfony phpunit monolog