在PHP中模拟exit()函数

时间:2017-03-14 08:53:28

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

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

我尝试使用php-mock提供exit的命名空间版本,例如

namespace MyNamespace;

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

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

有没有其他方法来模拟内置函数而不会引发解析问题?我应该尝试使用类似BetterReflection的内容来修改AST吗?

1 个答案:

答案 0 :(得分:1)

根据评论,我猜嘲笑语言结构是不可行的。

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