En utilisant des mocks il est souvent nécessaire de donner une valeur à une variable private ou protected. Pour ce faire il suffit d’utiliser la classe Reflection.
$basket = $this->getMockBuilder('Basket')
->disableOriginalConstructor()
->getMock();
$basketReflection = new ReflectionClass($basket);
$sessionId = $basketReflection->getProperty('sessionId');
$sessionId->setAccessible(true);
$sessionId->setValue($basket, 'abc');Ainsi la valeur de sessionId dans notre Mock sera ‘abc’.
Depuis PHP 8.1, setAccessible(true) est inutile et la ligne peut être supprimée.
