我不明白PhpUnit中
backupGlobals
选项的定义和用法。 PhpUnint 9.6 文档指出:
“PHPUnit 可以选择在每次测试之前备份所有全局和超全局变量,并在每次测试后恢复此备份”。
这到底是什么意思?什么是“backuped”:我的测试代码的全局和超全局,还是我的生产代码中的全局和超全局?他们的备份情况如何?为什么我想要或需要做这样的手术?有人可以举一个工作示例来强调启用此功能与不启用此功能之间的区别吗?
文档没有提供更多细节,我在网上也没有找到任何解释。
“可以在类级别使用
启用注释,为测试用例类的所有测试启用此操作:”@backupGlobals
在这里,我明白我们可以在配置文件级别(用于所有测试)或类级别(覆盖前一个)使用此选项。但如果不知道其目的,那就无济于事。
谢谢
在 PHP 中,每个代码都可以访问全局变量 (
$GLOBALS
) 和超级全局变量 ($_SERVER
, $_GET
, ...);请参阅超级全局。
这使得任何依赖它的 PHP 代码在访问这些变量(读取或写入)时都容易产生副作用。单元测试需要一个定义明确的被测系统。在测试前备份这些全局变量(并在测试后恢复它们)可以帮助隔离测试单元。
这是如何在 PHPUnit 中实现的,您应该可以使用其源代码,以便您可以专门检查它。 IIRC 它会复制这些值,然后恢复它们。这意味着备份不是文件系统备份,而是 PHPUnit 运行程序进程内存中的备份,例如使用与
Array
类似的 $GLOBALS
等。