Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit:如何将常量的值转换为模拟值?_Php_Unit Testing_Phpunit_Unit Of Work - Fatal编程技术网

PHPUnit:如何将常量的值转换为模拟值?

PHPUnit:如何将常量的值转换为模拟值?,php,unit-testing,phpunit,unit-of-work,Php,Unit Testing,Phpunit,Unit Of Work,我想测试这部分: if ($unitOfWork->getEntityState($entity) === $unitOfWork::STATE_NEW) { .... 我已经有了一个$unitOfWork的模拟。但UnitofWork有一个常数“STATE_NEW”,我不知道我怎么能嘲笑它?因为当我说,方法“getEntityState”重新运行值“STATE\u NEW”,我想说,$unitOfWork::STATE\u NEW等于返回值,因此它是if条件! 有人有主意吗? 我已经试

我想测试这部分:

if ($unitOfWork->getEntityState($entity) === $unitOfWork::STATE_NEW) { ....
我已经有了一个$unitOfWork的模拟。但UnitofWork有一个常数“STATE_NEW”,我不知道我怎么能嘲笑它?因为当我说,方法“
getEntityState
”重新运行值“
STATE\u NEW
”,我想说,
$unitOfWork::STATE\u 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();
    }

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

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

你能不能把它和普通类的常量进行比较?只需使用$class::STATE\u NEW比较返回的值是否正确?谢谢!我也明白了!这就是解决办法!