我一直在花时间去理解编写可测试代码背后的方法,我偶然发现了Misko Hevery的一篇好文章,他清楚地解释了如何在应用程序构建中处理依赖关系,例如使用工厂加载所有对象,从而减少行使测试复杂化的依赖项
在他的帖子中,他提供了一个最小但尽管很有见地的例子,说明了他如何在java中设置应用程序,以下无耻地引用了以下内容:
// Your main should look like this:
class Main {
public static void main(String…args) {
AppFactory factory = new AppFactory(args);
MyApp app = factory.create();
app.run();
}
}
Run Code Online (Sandbox Code Playgroud)
然后他说:
请注意代码如何分为三个阶段.创建工厂,创建应用程序,运行应用程序 这使得它可以测试.无论你的应用是什么,你都应该放弃这种模式.为了让单例到正确的位置,Factory只创建一个实例,然后在调用new时将该实例传递给所有类的构造函数.请参阅:http://misko.hevery.com/2009/03/30/collaborator-vs-the-factory/
我不擅长Java,但是假设这可以在php中模仿,当然减去main()方法,但是在网络应用程序的上下文中$ args会来自哪里?和初始化?
我会非常有兴趣在PHP中看到一个最小的可测试应用程序示例,甚至是那些认为测试效率高的应用程序的链接.初始化是我很好奇的,主要是.我的目的不是复制粘贴,而是从经验丰富的OOP编码器提供的内容中学习.
我翻过几个流行代码库的代码:Zend,Symphony,但这些框架不是可运行的应用程序,看起来"太快太快",让我无法掌握清晰的画面.此外,在有关测试实践的框架中也指出了一些不足之处.只是一个小例子,如果可能的话(即使不可运行)会让我在从头开始创建一个小应用程序时更好地掌握正确的OOP代码布局实践.
PHPUnit 的作者 Sebastian Bergmann 有一个示例应用程序来说明您在 GitHub 上的要求: