繁体   English   中英

PHP:使用MVC应用程序测试驱动的开发

[英]PHP: Test driven development with an MVC application

我已经在为项目的关键业务逻辑编写一些单元测试,并且我知道TDD的概念和优缺点-我从来没有真正真正地“先从TDD开始”就编写测试。 我目前正在从事一个我自己没有开发的中型项目,这非常糟糕:无法进行任何测试,紧密耦合的体系结构,没有依赖项注入,遗留的MVC框架等等-不太理想。 我正在考虑使用Laravel或Symfony从头开始,并应用TDD真正实现松散的耦合和可测试的代码。

我知道,仅仅通过一个如此“大”的项目首先进入TDD可能不是一个好主意,因此我想我应该做几个测试项目,以了解TDD如何影响我的代码设计和质量。 为此,我们假设这只是一种带有用户注册的“电影租赁应用程序”,并且具有租借电影的功能(如果有)。 我们还假设我已经做过一些UML图,并且对所需的对象,它们之间的关系以及所需的业务逻辑有一些想法。

那么:从哪里开始? 与在MVC框架上进行TDD的人员交谈时,有些人倾向于“隔离”业务逻辑功能并开始进行验收测试,该功能为“显示可用电影的列表”,而测试则类似于“导航至” / movies,并针对某些HTML进行断言”或其他内容。 对我来说,这并不是一个好的开始。

就个人而言,我喜欢从用户登录或用户管理之类的功能入手-相当多的东西是在支持应用程序,而不是业务逻辑本身。 如果要使用该方法,是否会故意忽略我已经知道需要的功能? 让我们假装电影列表测试工作,所以我要添加另一个测试,例如“ OnlyLoggedInUserCanSeeMovieList”,看看它失败了,并将逻辑添加到代码中—我甚至在编写第一个测试之前就知道该逻辑。 我很难相信这将导致更好的代码,因为我故意不实现我已经意识到的功能。

这是根据个人喜好而定,还是有让我入门的最佳实践之类的东西? 你们如何在Symfony或Laravel等框架中以TDD开始? 在这样的情况下,考虑到框架本身已经处理和测试了很多应用程序逻辑,甚至进行纯TDD都有意义吗? 不要误会我的意思:我不想就TDD的优缺点展开另一场战争-我敢肯定,一旦我完全意识到这一点,我就能从中受益。 尽管如此,现在这在相当简单的功能上感觉像是微不足道的微进步,我觉得我最好只对应用程序逻辑的重要部分进行单元测试,而不要进行所有的“写测试,看它失败,编写代码” ,重构”迭代。

感谢您的投入,

克里斯

我首先要说,您需要做一些研究才能找到将要使用的捆绑软件。例如,您说您希望开始对用户管理进行单元测试,除了在fSymfony中您已经拥有了出色的用户管理捆绑软件之外测试系列。 因此,我要说的是,在开始您的项目时的第一步是找到已经存在并适合您的需求。 在尽可能多地抽象之后,应该更容易看到从哪里开始(通常编写测试以确保所使用的所有捆绑软件都能正常工作)。

希望对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM