2012-09-14 83 views
1

我想在我的项目的一些单元测试(我是新来的测试),但在线教程似乎表明实例测试仅simpliest东西。Zend的单元测试与数据库

我要考什么情况下,我SurveyController发送POST到的addAction会导致增加相应行到我的调查和问题表(一到多)后,当。

什么是测试数据库相关的东西的最佳实践?我是否为我的测试环境创建单独的数据库并对其执行测试?这是唯一正确的选择?

+0

最佳做法是模拟数据库,以便您可以控制响应以测试不同的结果 –

回答

2

这要看您的具体情况。

这是我对这个:

的想法是要测试,但也DRY(不要重复自己)。您的测试必须涵盖所有或尽可能多的不同情况,以确保您的组件经过全面测试并准备好发布。

如果您使用已开发的框架来访问您的数据库,如Doctrine,Zend Framework,PhalconPHP等,那么您可以假设该框架已经过测试并且未测试实际的CRUD操作。你可以专注于你自己的代码。

有些人可能想测试甚至认为,但在我看来这是一个矫枉过正和资源浪费。实际上,如果他们想要进行更多的测试,实际上可以包括特定框架的测试:)

如果您对数据库层类及其与应用程序的交互负有责任,那么测试是必须的。您可能无法在您需要通过代码验证数据库操作是否正常的时候运行它们,但您需要拥有它们。

最后,您可以使用代码中建议的模拟测试Mark Baker,并假定数据库将按照您的预期进行响应(因为它已经过测试)。然后您可以看到您的应用程序将如何对不同的响应或结果做出反应。

惩戒数据库操作,实际上使你的测试运行得更快(与配备这种策略的还有其他优点),因为不会有在测试本身的任何数据库交互。如果不是成千上万的测试和持续集成,这个项目可以变得非常方便。

HTH