热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用PHPUnit在doctrine2中模拟findOneBy"field"

如何解决《使用PHPUnit在doctrine2中模拟findOneBy"field"》经验,为你挑选了1个好方法。

如果我嘲笑库方法find我得到预期的结果,但如果我叫要么findBy,findOneBy,findOneById我总是得到null.

代码示例:

$mock->expects($this->once())
                ->method('getId')
                ->will($this->returnValue(1));
$mockRepository->expects($this->any())
                         ->method('findBy') //if here I use 'find' works for all other cases always null
                         ->will($this->returnValue($mock));

有这种情况发生的原因吗?是否有可能嘲笑Doctrine2的"魔法"方法findById或者findOneById?如果是的话,我的方法出了什么问题?



1> Matteo..:

如评论中所述,可以通过模拟魔术方法调用来实现.例如:

 // Mocked return value
 $mock->expects($this->once())
            ->method('getId')
            ->will($this->returnValue(1));

 // Example of repo mocking
 // $mockRepository= $this->getMock('Doctrine\ORM\EntityRepository', array(), array(), '', false);

$this->mockRepository
->expects($this->at(1))
->method('__call')
->with('findBy')
->will($this->returnValue($mock));

希望这有帮助


推荐阅读
author-avatar
灬处男求包养灬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有