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

时间:2013-10-03 16:23:46

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

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

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

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

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

感谢帮助。

1 个答案:

答案 0 :(得分: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测试的方式,语法可能会有所不同,但这些步骤应该会帮助您。