【问题标题】:Can't alter constants when writing Behat tests for PHP code为 PHP 代码编写 Behat 测试时无法更改常量
【发布时间】:2012-03-28 05:08:53
【问题描述】:

我有一个基于 PHP 的库,它接收电话号码并将其转换为适合本地的显示格式。 (例如,美国电话号码 14083493300 变为 1 (408) 349-4993)

代码是我们办公室电话系统的一部分,该系统在每个办公室都有一个物理服务器。每个服务器都定义了一组常量,用于管理库应使用的本地习惯:国家代码、外线前缀、本地扩展长度等。在生产中这不会造成任何问题,因为这些常量在运行时永远不会改变。

但是这个库有点笨拙,我们要求非开发人员编辑它,所以我想介绍 BDD,这样我们就可以记录它应该做什么并注意回归.

第一个使用 Behat 的测试集就像一个魅力;为一个区域设置所有常量,运行一桶测试,很好。但是当 Behat 加载下一个 .feature 文件时,该文件描述了一个不同的区域,对于相同的常量具有不同的值,PHP barfs。

我可以在每个 .feature 文件上单独手动运行 Behat,但是有更好的解决方法吗?在加载下一个功能文件之前让 Behat 清理常量空间的东西?

【问题讨论】:

标签: php tdd bdd behat


【解决方案1】:

无法在 PHP 中重新定义常量。由于所有功能都在一个 PHP 进程中运行,因此您无法真正一次性完成。

解决方案可能会按照您自己的建议单独运行它们。实现一个可以找到所有功能文件并运行它们的脚本应该相当容易。

您还可以尝试使用system() 运行将常量定义为单独进程的代码,使用ob_start()+ob_get_contents() 捕获它的输出并在您的步骤中检查它。当然,这取决于您的代码是如何构建的。

【讨论】:

  • 我害怕那个。谢谢!
【解决方案2】:

我认为您可以使用 @AfterFeature 挂钩重置或清除您想要的常量。

查看相关文档:http://docs.behat.org/guides/3.hooks.html

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多