单元测试和静态方法
阅读并掌握单元测试,试图理解下面的帖子,该帖子解释了静态函数调用的困难。
我不清楚这个问题。我一直认为静态函数是在类中查找实用程序函数的好方法。例如,我经常使用静态函数调用来初始化,即:
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 ...
但是,我为这门课写的几十个测试是一样的。我什么都没改,他们还是都过去了。我做错了什么吗?
该帖子的作者声明如下:
静态方法的基本问题是它们是过程代码。我不知道如何对过程代码进行单元测试。单元测试假定我可以单独实例化应用程序的一部分。在实例化期间,我将依赖关系与模拟/友谊赛连接起来,以取代真正的依赖关系。使用过程编程,没有什么可以“连接”的,因为没有对象,代码和数据是分开的。
现在,我从帖子中了解到静态方法创建了依赖关系,但是没有直观地理解为什么不能像常规方法一样轻松地测试静态方法的返回值?
我将避免使用静态方法,但我希望了解静态方法何时有用,如果有的话。从这篇文章来看,静态方法似乎和全局变量一样邪恶,应该尽可能避免。
有关该主题的任何其他信息或链接将不胜感激。