【问题标题】:Using PHPUnit, how do I mock a Doctrine Entity Repository class within a controller in Zend Framework 2?使用 PHPUnit,如何在 Zend Framework 2 的控制器中模拟 Doctrine Entity Repository 类?
【发布时间】:2013-10-10 10:51:12
【问题描述】:

我正在关注 Zend Framework 2 的单元测试网站上的 guide。我的“骨架”应用程序与教程略有不同,因为我集成了 Doctrine 2 而不是使用 Zend 的内置 DB 适配器。

在我的 AlbumController.php 的 indexAction() 中,我使用以下 sn-p 检索所有专辑记录:

return new ViewModel(array(
        'albums' => $this->getEntityManager()->getRepository('Album\Entity\Album')->findAll()    
));

如何在 IndexControllerTest.php 文件中的 testIndexActionCanBeAccessed() 中模拟它,以便它返回虚拟值?

感谢您的帮助。

【问题讨论】:

    标签: php doctrine-orm zend-framework2 mocking phpunit


    【解决方案1】:

    创建 EntityManager 的模拟

    创建一个 AlbumRepository 的模拟

    创建一个 AlbumEntity 的模拟

    然后使用 PHP UNIT 你需要

    create an $entityMock->expects($PHPUnit->once())->method('getRepository')->will($PHPUnit->returnValue($repositoryMock));
    
    create a $repositoryMock->expects($PHPUnit->once())->method('findAll')->will($PHPUnit->returnValue(array($albumEntityMock));
    

    根据您实现 PHPUnit 测试的方式,语法可能会有所不同,但这些步骤应该对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2015-02-12
      • 2017-06-27
      • 1970-01-01
      • 2015-07-24
      • 2014-07-22
      • 2011-08-08
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多