【发布时间】:2011-08-23 02:13:45
【问题描述】:
阅读并学习单元测试,试图理解 the following post 的含义,它解释了静态函数调用的困难。
我不清楚这个问题。我一直认为静态函数是在类中舍入实用函数的好方法。比如我经常使用静态函数调用来初始化,即:
Init::loadConfig('settings.php');
Init::setErrorHandler(APP_MODE);
Init::loggingMode(APP_MODE);
// start loading app related objects ..
$app = new App();
// 看完这篇文章,我现在的目标是……
$init = new Init();
$init->loadConfig('settings.php');
$init->loggingMode(APP_MODE);
// etc ...
但是,我为这门课编写的几十个测试是相同的。我没有改变任何东西,它们仍然都通过了。我做错了吗?
该帖子的作者声明如下:
静态方法的基本问题是它们是过程代码。我不知道如何对程序代码进行单元测试。单元测试假设我可以单独实例化我的应用程序的一部分。在实例化期间,我将依赖项与替换真正依赖项的模拟/友好连接。对于过程式编程,没有什么可以“连接”的,因为没有对象,代码和数据是分开的。
现在,我从帖子中了解到静态方法会创建依赖关系,但不能直观地理解为什么不能像常规方法一样轻松测试静态方法的返回值?
我将避免使用静态方法,但我希望了解静态方法何时有用(如果有的话)。从这篇文章看来,静态方法与全局变量一样邪恶,应尽可能避免。
非常感谢您提供有关该主题的任何其他信息或链接。
【问题讨论】:
标签: php unit-testing phpunit