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比较返回的值是否正确?谢谢!我也明白了!这就是解决办法!