加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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栏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读