【发布时间】:2025-12-22 03:10:06
【问题描述】:
我有非常旧的遗留代码。在开始重构之前,我想对代码进行一些单元测试。但不好的是文件通过“require_once”语句相互依赖(但是,我要测试的函数是隔离的)。
所以如果我无法模拟“require_once”语句,我就无法编写正常的测试。
我正在使用 Kahlan 框架进行测试。那么可以模拟这样的陈述吗?如果是,比如何?
【问题讨论】:
-
因为
require_once是一个PHP 语句,所以它介于非常难以模拟和不可能模拟之间。但是,除非执行了一些不需要的代码,否则简单地包含彼此的文件不一定会破坏单元测试,不是吗? -
@deceze 我知道 Kahlan 允许以特定方式进行猴子修补(例如,用于内置函数):它复制文件,用他自己的代码替换此代码中的一些内置函数,然后对这个“新”代码执行测试。这种方法也可用于模拟“require_once”或任何其他语句,因此问题诞生了。而且,不幸的是,一些必需的文件会执行不需要的辅助代码。
-
@deceze 我解决了这个问题。有兴趣的可以看我的回答。
-
你需要的是功能测试,而不是单元测试。
-
@mike 我也需要它们,但是功能测试非常缓慢且难以编写。
标签: php unit-testing