我想测试这部分:
if ($unitOfWork->getEntityState($entity) === $unitOfWork::STATE_NEW) { ....
我已经有了$ unitOfWork的MOCK。但是UnitofWork有一个CONST“STATE_NEW”,我不知道我怎么能嘲笑这个?因为当我说,“getEntityState
”方法返回值“STATE_NEW
”时,我想说,$unitOfWork::STATE_NEW
等于返回值,所以它是if-条件!
有人有想法吗?
我已经尝试过了:
$unitOfWorkMock->expects($this->once())
->method('STATE_NEW')
->will($this->returnValue('STATE_NEW'));
......但不起作用! 这也是不可能的:
$unitOfWorkMock::STATE_NEW = 2;
为了得到我的单位工作,我打电话:
private function getUnitOfWorkMock()
{
return $this->getMockBuilder('\Doctrine\ORM\UnitOfWork')
->disableOriginalConstructor()
->getMock();
}
答案 0 :(得分:1)
你不需要模拟常量,因为基本上模拟对象扩展了真实对象,并且它们具有所有常量。
$unitOfWorkMock->expects($this->once())
->method('getEntityState')
->will($this->returnValue($unitOfWorkMock::STATE_NEW));