2013-05-01 83 views
9

我正在使用CakePHP 2.3并希望知道如何正确使用测试驱动开发(TDD)构建CakePHP网站。我读过the official documentation on testing,阅读Mark Story的Testing CakePHP Controllers the hard way,并观看了Mark Story的Win at life with Unit testingPDF of slides),但我仍然感到困惑。我应该注意到,我用任何语言撰写测试的过程都不太好,也没有太多的经验,这可能会导致我的困惑。CakePHP中的测试驱动开发

我想看看如何使用TDD构建CakePHP网站的代码示例的逐步演练。有关于TDD的文章,有关于CakePHP测试的文章,但是我还没有找到关于这两者的深入文章。我希望在整个过程中保持我的手。我意识到这是一个很高的顺序,因为除非我的Google-fu失败了我,我很确定这样的文章还没有发布,所以我基本上要求你写一篇文章(或者长篇堆栈溢出答案),这需要时间。因为这是一项艰巨的任务,我计划在这个问题上得到一个值得许多观点的奖励,以便更好地奖励某人的努力,如果有人愿意这样做的话。我感谢你的时间。

+0

你究竟想要什么,我的意思是如何深度。你能举个例子来帮助我理解你的意思吗? – ncm 2013-05-06 05:00:03

+0

也需要时间,可能比邦迪会结束的时间还多。 – ncm 2013-05-06 05:05:39

回答

10

TDD有一点瑕疵,因为它基本上只是在编写代码之前编写测试以确保您正在编写测试。

所有你需要做的就是在你创建一个东西之前创建你的测试。这需要想法和您的用例分析,以编写测试。

所以,如果你想有人查看数据,你会想写一个控制器的测试。它可能会像testViewSingleItem(),你可能想要assertContains()一些你想要的数据。

写完之后,应该失败,那么你就去编写你的控制器方法,以便通过测试。

就是这样。只需冲洗并重复每个用例。这是单元测试。其他诸如功能测试和集成测试等测试只是测试应用程序的不同方面。这取决于您对认为决定哪些测试对您的项目有用。

大多数情况下,单元测试是您可以测试应用程序各个部分的方法。通常会影响功能的部分,即“关键路径”。

这是一个令人难以置信的有用的TDD教程。 http://net.tutsplus.com/sessions/test-driven-php/

+0

我感谢您的时间和建议!该链接也很有帮助。不过,我仍然有兴趣看到使用CakePHP进行TDD的深入演练。 – Nick 2013-05-03 04:07:22

+0

TDD和CakePHP之间没有真正的“事物”。你只需要学习TDD理论,学习PHP单元,然后编写一些测试。这本书在测试方面有很好的篇章。 http://book.cakephp.org/2.0/en/development/testing.html – 2013-05-07 11:05:27

+0

另请参阅CakePHP本身的源代码。在['lib/Cake/Test'](https://github.com/cakephp/cakephp/tree/master/lib/Cake/Test/)目录中,你会发现框架本身的所有单元测试。你可以使用这些作为自己的测试的例子,例如,了解如何创建一个单元测试来测试控制器或模型 – thaJeztah 2013-05-07 21:25:53