如何从phpUnit Mock对象获取私有属性

时间:2018-06-27 09:48:27

标签: php phpunit

例如我上课

class Car
{
   private $color='red';
}

我做了模拟对象之后

$carMock = $this->getMockBuilder(Car::class)->getMock();

所以现在我想获得Car类的私有属性颜色

该怎么做?!

我可以使用诸如getCar之类的公共方法,它将起作用,但是我想寻找另一种方法。

我尝试使用ReflectionClass,但这是错误的。

1 个答案:

答案 0 :(得分:0)

public function setProtectedProperty($object, $property, $value) {
    $reflection = new \ReflectionClass($object);
    $reflection_property = $reflection->getProperty($property);
    $reflection_property->setAccessible(true);
    $reflection_property->setValue($object, $value);
}

public function getProtectedProperty($object, $property) {
    $reflection = new \ReflectionClass($object);
    $reflection_property = $reflection->getProperty($property);
    $reflection_property->setAccessible(true);
    $reflection_property->getValue($object);
}