是否可以模拟
EntityRepository::findOneBy{$field}($value)
功能?
使用:
->getMock('EntityRepository')
->expects($this->any())
->method('findOneByField')
始终以null结算,因为findOneByField
不是真正的函数,而是由__call()
映射。至少我认为这就是问题..
答案 0 :(得分: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
执行相同的操作。我手边没有一个人可以进行测试。