【问题标题】:ZF2 & Doctrine2: mock EntityRepository::findOneByFieldZF2 & Doctrine2:模拟 EntityRepository::findOneByField
【发布时间】:2013-09-22 10:57:09
【问题描述】:
是否可以模拟
EntityRepository::findOneBy{$field}($value)
功能?
使用:
->getMock('EntityRepository')
->expects($this->any())
->method('findOneByField')
总是解析为空,因为findOneByField 不是真正的函数,而是由__call() 映射。至少我认为这是问题所在..
【问题讨论】:
标签:
unit-testing
doctrine-orm
zend-framework2
phpunit
【解决方案1】:
您可以模拟__call 方法。举个简单的例子:
类:
class A {
public function __call($fname, $args) {
if($fname === 'test') {
return 'test';
}
}
}
测试:
class ATest extends PHPUnit_Framework_TestCase
{
public function testA() {:
$mock = $this->getMock('A');
$mock->expects($this->any())
->method('__call')
->with('test')
->will($this->returnValue('test'));
var_dump($mock->test());
}
}
您可以对EntityRepository 执行相同的操作。我只是手头没有测试。