我已将问题缩小到单个单元测试,其中涉及一个非常干净的dbal查询。查询涉及嵌套集,当我从3级到4级层次结构类别时,会发生故障。执行时间方面的变化非常小..我使用的功能在10级没有问题。但是,在PhpUnit中,当我运行4级或更多级别的测试时 - 我收到致命错误。
*总而言之,查询可能需要比平常多一点时间,或者标签位更多的资源让我在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致命错误问题。可能是相关的??
我列出了一些奇怪的方法(下面)来绕过我的问题,但我仍然想知道为什么这样的基本测试似乎导致了这个问题。
processIsolation
设置为“true”。static::createClient();
我有一个受人尊敬的#symfony(Stof)成员表示我看起来不正确地将@logger变成了服务......但我已经证实这似乎不是通过服用我的任何服务中的记录器服务。
也许这个问题与超时有关? (错误提及stopevent
和stopwatch
)。或者这个错误可能与访问$client = static::createClient();
中的setUpBeforeClass()
有关...然后再次访问前面的测试..无论如何......这让我感到困惑,据我所知,其他一切都在我的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);}
答案 0 :(得分:1)
行。因此,您从$this->activeSections
数组中获取最后一项,然后尝试在其上运行stopEvent()
方法。在这种情况下,似乎LineFormatter
类没有该方法可用。
我不熟悉Monolog,但是在简短地看一下他们最新的GitHUb repo时,我可以看到它继承的LineFormatter或NormalizerFormatter类都没有这样的方法。
似乎Monolog与Symfony并不相称。如果不修改Monolog和/或Symfony Stopwatch类,您将无法使用Stopwatch来分析与Monolog相关的代码。