有没有一种方法可以让Behat NOT在PHP注意错误时失败


Is there a way to have Behat NOT fail on PHP Notice errors?

我知道定义所有变量并在求值前检查数组索引是一种最佳做法。然而,我正在尝试对在一些未以这种方式编码的遗留代码之上开发的新功能进行一些测试。

Behat失败,显示以下消息:

  Scenario: Add a new resource                         # features/accounting.feature:6
    Given I am user "admin"                            # FeatureContext::iAmUser()
      Notice: Undefined index: 13 in classloader.php line 126
    When I create a new resource                       # FeatureContext::iCreateANewResource()
    Then [...]

我最终会修复这些通知,但我现在需要Behat忽略来自PHP的通知。有办法做到这一点吗?

谢谢!

EDIT:这将适用于Behat的v2.x。对于v>3.x,请参见下面Alexander Haas的回答。

终于找到了!通过深入研究代码,我发现Behat有一种方法可以更改错误报告级别。只做

define('BEHAT_ERROR_REPORTING', E_ERROR | E_WARNING | E_PARSE);

在CCD_ 1文件中。它成功了!

之后,我在谷歌上搜索了常数,并在变更日志中找到了这个:

  • 添加了BEHAT_ERROR_REPORTING常量以更改ERROR_repoting级别

对于Behat3请参阅我的问答:当出现E_USER_DEPRECATED 级别的错误时,如何运行Behat测试

CCD_ 2被丢弃以有利于配置值。