【问题标题】:Is there a way to have Behat NOT fail on PHP Notice errors?有没有办法让 Behat 不会因 PHP Notice 错误而失败?
【发布时间】:2012-02-29 09:05:52
【问题描述】:

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

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 的通知。有没有办法做到这一点?

谢谢!

【问题讨论】:

  • 谢谢。然而,通知隐藏在 php.ini 和 FeaturesContext 文件中的 error_reporting(E_ERROR | E_WARNING | E_PARSE) 中。尽管如此,Behat 还是失败了。

标签: php notice behat


【解决方案1】:

编辑:这适用于 Behat v2.x。对于 v > 3.x,请参阅下面的 Alexander Haas 答案。

终于找到了!通过挖掘代码,我发现 Behat 有办法改变错误报告级别。做吧

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

FeatureContext.php 文件中。成功了!

之后,我用谷歌搜索了这个常量,并在changelog 中找到了这个:

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

【讨论】:

  • 你在哪里添加的?在构造函数上?这是正确的方法吗?
  • 对我不起作用。在第一个错误之后它仍然会停止。
  • 哪种类型的错误?这将在错误、警告和语法错误时停止。请参阅php.net/manual/en/function.error-reporting.php 了解更多信息。
【解决方案2】:

对于 Behat 3,请参阅我的问答:How to run Behat tests when there are errors of level E_USER_DEPRECATED

BEHAT_ERROR_REPORTING 被删除以支持配置值。

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 2018-06-29
    • 2012-07-17
    • 2012-08-09
    • 2023-03-17
    • 1970-01-01
    • 2018-03-09
    • 2022-11-29
    相关资源
    最近更新 更多