public function testSetValueWithTheDecoratedAccessorWhenTheObjectIsNotAnInstanceOfStdClass()
{
$object = new DummyWithPublicProperty();
$property = 'val';
$value = 'bar';
$expected = new DummyWithPublicProperty();
$expected->val = 'bar';
$decoratedAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class);
$decoratedAccessorProphecy->setValue($object, $property, $value)->will(function ($args) {
$args[0]->{$args[1]} = $args[2];
});
/** @var PropertyAccessorInterface $decoratedAccessor */
$decoratedAccessor = $decoratedAccessorProphecy->reveal();
$accessor = new StdPropertyAccessor($decoratedAccessor);
$accessor->setValue($object, $property, $value);
$this->assertEquals($expected, $object);
$decoratedAccessorProphecy->setValue(Argument::cetera())->shouldHaveBeenCalledTimes(1);
}