Unit testing 如何使用数据库访问测试视图帮助程序
我有一些视图助手(crossmodule),它们需要访问数据库。这方面的一个常见示例是Unit testing 如何使用数据库访问测试视图帮助程序,unit-testing,zend-framework,zend-framework2,view-helpers,Unit Testing,Zend Framework,Zend Framework2,View Helpers,我有一些视图助手(crossmodule),它们需要访问数据库。这方面的一个常见示例是NotificationHelper,它跨多个页面打印用户通知: <div class="notifications"> <?php echo $this->notifications()->render(); ?> </div> 虽然这非常方便,但使用AbstractHttpControllerTestCase在控制器上进行烟幕测试/单元测试似乎非常困难,
NotificationHelper
,它跨多个页面打印用户通知:
<div class="notifications">
<?php echo $this->notifications()->render(); ?>
</div>
虽然这非常方便,但使用AbstractHttpControllerTestCase
在控制器上进行烟幕测试/单元测试似乎非常困难,因为助手总是希望访问数据库(显然他不应该,是吗?)。因此,为了防止出现这种情况,我需要模拟NotificationHelper
。但这还不够,因为模拟将返回$this->notifications()
:null
,因此render()
将失败
我能想到的唯一方法是:
- 模拟
NotificationHelper
- 定义
的返回值,例如(在本例中)NotificationHelper
\uu invoke()
- 分离RenderListener,但这会导致视图无法以任何方式进行测试(如果所有
仍能工作,有时可以查看视图)
有没有更好的方法?或者整个过程都错了?或者我的想法完全错了吗?AbstractHttpControllerTestCase可以用于功能测试,但不应该用于真正的单元测试