PHPUnit:如何获得CONST的值到模拟?

时间:2014-11-27 15:34:52

标签: php unit-testing phpunit unit-of-work

我想测试这部分:

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();
    }

1 个答案:

答案 0 :(得分:1)

你不需要模拟常量,因为基本上模拟对象扩展了真实对象,并且它们具有所有常量。

$unitOfWorkMock->expects($this->once())
        ->method('getEntityState')
        ->will($this->returnValue($unitOfWorkMock::STATE_NEW));