使用 PHPUnit,如何在 Zend Framework 2 中的控制器中模拟 Doctrine Entity Rep


Using PHPUnit, how do I mock a Doctrine Entity Repository class within a controller in Zend Framework 2?

我正在遵循Zend Framework 2网站上关于单元测试的指南。我的"骨架"应用程序与教程略有不同,因为我集成了 Doctrine 2,而不是使用 Zend 的内置数据库适配器。

在我的专辑控制器的 indexAction() 中.php我使用以下代码片段来检索所有专辑记录:

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

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

感谢您的帮助。

创建实体管理器的模拟

创建专辑存储库的模拟

创建相册实体的模拟

那么使用 PHP 单元,您需要

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 测试的方式,语法可能会有所不同,但这些步骤应该会在此过程中为您提供帮助。