【问题标题】:Mock exit() function in PHPPHP中的模拟exit()函数
【发布时间】:2017-03-14 08:53:28
【问题描述】:

对于我正在编写的库,我希望能够模拟 exit PHP 函数。

我尝试使用php-mock 来提供exit 的命名空间版本,类似于

namespace MyNamespace;

function exit()
{
    // my mocked version of the function
}

但这会给解析器带来问题,它会抛出以下ParseErrorsyntax error, unexpected 'exit' (T_EXIT), expecting '('

有没有其他方法可以模拟内置函数而不会导致解析问题?我应该尝试用BetterReflection 之类的东西修改 AST 吗?

【问题讨论】:

  • exit 是一种语言结构,不能模拟它。
  • Exit 是一种语言结构,而不是函数。因此,我认为您无法替换它。
  • 我认为即使这个问题的前提是一个有缺陷的假设,它确实值得 +1,特别是考虑到 php 标签中的信噪比。

标签: php unit-testing reflection abstract-syntax-tree monkeypatching


【解决方案1】:

根据 cmets,我猜想模拟语言结构是不可行的。

为了测试exit(),我最终使用exec 生成了其他进程并断言它们的输出和存在状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多