zend-framework – 如何对zend动作控制器进行单元测试?
发布时间:2020-12-13 16:13:28 所属栏目:PHP教程 来源:网络整理
导读:我需要在php中快速构建好的软件并使用zend框架.我尝试以TDD的方式进行此操作,因为比我更有经验的人告诉我,这是快速构建同时保持代码可管理性的最佳方式. 所以我得到了关于phpunit的书并顺利进行,确实在最初的麻烦后它开始加速并且代码仍然很好.我很喜欢我的
我需要在php中快速构建好的软件并使用zend框架.我尝试以TDD的方式进行此操作,因为比我更有经验的人告诉我,这是快速构建同时保持代码可管理性的最佳方式.
所以我得到了关于phpunit的书并顺利进行,确实在最初的麻烦后它开始加速并且代码仍然很好.我很喜欢我的物品可以单独测试. 然而,测试zend动作控制器存在一个主要问题. zend_test包提供了一种测试方法.但这似乎立刻测试了整个应用程序.我似乎无法很好地存根或模拟任何存储库或注入任何其他依赖项.因此,我无法像对待项目的其余部分那样对它们进行广泛的测试. 我一直在寻找解决这个问题.但我能在网上找到的只有zend_test的方式. 我想知道你对此的看法.也许我只是想做一些事情,或者有一种更好的方法来开发zend动作控制器的单元测试. 解决方法
在Zend 1中,控制器是普通类.您可以实例化它,您可以在其上调用方法(例如,使用存储库的
PHPUnit模拟替换您的默认存储库:
class MyController extends Zend_Controller_Action { public functioni init() { $this->repository = new MyRepository(); } public function setRepository($repository) { $this->repository = $repository; } public function saveAction() { $dataToWrite = manipulate in some way $this->getRequest()->getParams(); $this->repository->update($dataToWrite,...); } } 但是你还必须注入一个请求,并发送它以获得响应. 对于控制器而言,我更喜欢编写功能测试而不是单元测试(使用Zend_Test).它速度较慢,您可能需要一个内存中的sqlite数据库,依此类推.但是你会知道你的应用程序是否真的有效:你可以对每个类进行单元测试,但是如果连接你的对象的工厂是错误的,那么你将继续得到一个带有应用程序损坏的绿色PHPUnit栏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |