Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用数据库进行Zend单元测试_Php_Database_Zend Framework_Testing - Fatal编程技术网

Php 用数据库进行Zend单元测试

Php 用数据库进行Zend单元测试,php,database,zend-framework,testing,Php,Database,Zend Framework,Testing,我想在我的项目中进行一些单元测试(我是测试新手),但在线教程似乎只展示了测试最简单内容的示例 我想测试的是,在向SurveyController中的addAction发送POST后,会将相应的行添加到我的调查和问题表中(一对多) 测试数据库相关内容的最佳实践是什么?我是否为我的测试环境创建单独的db并在其上运行测试?这是唯一正确的选择?这取决于你的情况 以下是我对此的看法: 这个想法是为了测试,但同时也是为了(不要重复你自己)。您的测试必须覆盖所有或尽可能多的不同情况,以确保您的组件经过彻底测试

我想在我的项目中进行一些单元测试(我是测试新手),但在线教程似乎只展示了测试最简单内容的示例

我想测试的是,在向SurveyController中的addAction发送POST后,会将相应的行添加到我的调查和问题表中(一对多)


测试数据库相关内容的最佳实践是什么?我是否为我的测试环境创建单独的db并在其上运行测试?这是唯一正确的选择?

这取决于你的情况

以下是我对此的看法:

这个想法是为了测试,但同时也是为了(不要重复你自己)。您的测试必须覆盖所有或尽可能多的不同情况,以确保您的组件经过彻底测试并准备发布

如果您使用一个已经开发的框架来访问您的数据库,例如,等等,那么您可以假设该框架已经过测试,而不是测试实际的CRUD操作。您可以专注于自己的代码所做的事情

有些人甚至可能想测试,但在我看来,这是一种过激和资源浪费。如果想要进行更多的测试,可以将特定框架的测试包含在自己的测试中:)

但是,如果您负责数据库层类及其与应用程序的交互,那么测试是必须的。您可能不需要一直运行它们来证明数据库操作有效或不通过某段代码,但您需要拥有它们

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

模拟数据库操作实际上会使测试运行得更快(以及此策略带来的其他好处),因为测试本身不会有任何数据库交互。这在一个有成百上千个测试和持续集成的项目中非常方便


HTH

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