我想对一个类进行单元测试,我需要模拟实体。
总而言之,我需要制作一个childEntity
的反射类,以便设置其ID,然后调用
parentEntity->addChild($childEntity)
问题是addChild()
是childEntity
上提示的类型,当我发送ReflectionClass
时会抛出异常
有没有办法欺骗该方法认为参数是一个有效的类?
编辑:我忘了提及setId()
中的childEntity
不存在。这是由Doctrine处理的自动增量字段。
答案 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