我有一个 Symfony 2.7 表单类型,它导致了一些级别错误E_USER_DEPRECATED
。这个错误不是来自我自己的代码,而是来自vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php
.
In dev
使用网络浏览器模式,我可以使用所述表单访问该页面。 WDT 确实向我显示了一些已弃用的消息,但表单确实有效,页面返回状态为 200。
使用Behat 3(与Behat\Symfony2Extension\Driver\KernelDriver
and Behat\Mink\Driver\BrowserKitDriver
),对同一 URL 的请求将返回状态 500 服务器错误。响应中的堆栈跟踪显示 DEPRECATED 错误导致了异常。
我的 Behat 配置很简单,如中所述http://docs.behat.org/en/v3.0/cookbooks/1.symfony2_integration.html
当我做define('BEHAT_ERROR_REPORTING', 0);
在我的上面FeatureContext.php
按照建议的文件https://stackoverflow.com/a/9217606/2342504行为没有改变。
经过一些代码扫描,我猜这个常数BEHAT_ERROR_REPORTING
在 Behat 3 中被删除并且RuntimeCallHandler::errorReportingLevel
被用来代替。
但我目前不知道如何配置或设置RuntimeCallHandler::errorReportingLevel
.
所以我明白了。该文件给了我所需的提示:https://github.com/Behat/Behat/blob/master/features/error_reporting.feature#L100-L101
为了获得所需的整数,我使用了php -r "echo E_ALL & ~E_USER_DEPRECATED;"
这产生了16383
。所以我把它放入我的behat.yml
:
calls:
error_reporting: 16383
之后 Behat 最终没有崩溃,但它确实显示出了丑陋的异常痕迹。所以我把电话拨回error_reporting
in FeatureContext.php
,就在类定义之前:
error_reporting(error_reporting() & ~E_USER_DEPRECATED);
现在 Behat 会忽略级别的所有错误E_USER_DEPRECATED
我想我会一直保持这种状态,直到我开始使用 Symfony 3。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)