进行反射类传递类型提示

时间:2017-10-09 08:31:50

标签: php symfony phpunit type-hinting

我想对一个类进行单元测试,我需要模拟实体。 总而言之,我需要制作一个childEntity的反射类,以便设置其ID,然后调用

parentEntity->addChild($childEntity)

问题是addChild()childEntity上提示的类型,当我发送ReflectionClass时会抛出异常 有没有办法欺骗该方法认为参数是一个有效的类?

编辑:我忘了提及setId()中的childEntity不存在。这是由Doctrine处理的自动增量字段。

1 个答案:

答案 0 :(得分:0)

使用ReflectionProperty::setValue将value设置为类实例的属性。然后将实例本身作为参数传递,而不是Reflection类。 E.g:

$reflectionClass = new ReflectionClass('ChildEntity');
$childEntity = new ChildEntity();

$reflectionProperty = $reflectionClass->getProperty('ID');
$reflectionProperty->setAccessible(true);
$reflectionProperty->setValue($childEntity, 1);

$parentEntity->addChild($childEntity);

虽然这不是模拟。

有一个可以使用的工作示例:https://repl.it/MTWf

相关问题