2

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

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

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

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

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

4

2 回答 2

1

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

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

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

于 2012-03-27T21:08:53.193 回答
0

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

检查有关的文档:http: //docs.behat.org/guides/3.hooks.html

于 2012-03-22T06:19:24.583 回答