我被赋予了系统测试PHP脚本的任务,该脚本大约有1600行,并且每分钟都通过一个cron运行。该脚本是100%程序性的,并以30多个require_once()调用开始,这些调用引入了整个代码库。这就是系统从一开始就是如何设计的。
我被告知重构不是一种选择,因为目前还没有测试用例。
问题:
我在脚本中间遇到了一个'new'类构造函数。此类构造函数在不同的类中创建工厂。我不关心类构造函数或工厂。有没有办法绕过功能而不必模拟,存根等?
问题:
- 脚本开头的require()阻止我创建存根,因为我不能有两个具有相同名称的函数。 (实际功能和存根功能)
- 'new'位于脚本的中间,因此我无法为创建的对象添加模拟。
答案 0 :(得分:0)
不要真正理解你的整个问题,但是阅读你的问题的最后一部分,关于存根函数和类似物,也许你应该了解更多关于动态php如何。
例如:
http://php.net/manual/en/function.rename-function.php
所以基本上你可以重命名你想要存根的函数,并创建一个具有相同名称的新函数,如果需要,可以通过新函数中的新名称调用旧函数。
有许多这些东西用于操作类,函数等,其中一些是扩展形式的,并且非常hacky(特别是整个扩展http://www.php.net/manual/en/book.runkit.php),但出于测试目的,为什么不呢?