public function setUp() { $this->metadataFactory = $this->getMock(ClassMetadataFactory::class); $this->metadataFactory->method('hasMetadataFor')->will($this->returnValueMap([[DummyEntity::class, true], [DummyEmbeddable::class, true]])); $this->metadataFactory->method('getMetadataFor')->will($this->returnValueMap([[DummyEntity::class, DummyEntity::getMetadata()], [DummyEmbeddable::class, DummyEmbeddable::getMetadata()]])); $em = $this->getMock(EntityManagerInterface::class); $em->method('getMetadataFactory')->willReturn($this->metadataFactory); $this->entity = new DummyEntity(); $this->entity->setId(1); $this->entity->setA('1a'); $this->entity->setB('1b'); $this->entity->setC('1c'); $d = new DummyEmbeddable(); $d->setX(1); $d->setY(2); $d->setZ(3); $this->entity->setD($d); $child = new DummyEntity(); $child->setId(2); $child->setA('2a'); $child->setB('2b'); $child->setC('2c'); $d = new DummyEmbeddable(); $d->setX(21); $d->setY(22); $d->setZ(23); $child->setD($d); $this->entity->addChild($child); $child = new DummyEntity(); $child->setId(3); $child->setA('3a'); $child->setB('3b'); $child->setC('3c'); $d = new DummyEmbeddable(); $d->setX(31); $d->setY(32); $d->setZ(33); $child->setD($d); $this->entity->addChild($child); $subchild = new DummyEntity(); $subchild->setId(4); $subchild->setA('4a'); $subchild->setB('4b'); $subchild->setC('4c'); $d = new DummyEmbeddable(); $d->setX(41); $d->setY(42); $d->setZ(43); $subchild->setD($d); $child->addChild($subchild); $this->normalizer = new DoctrineNormalizer(null, null, null, $em); $propertyNormalizer = new PropertyNormalizer(); $serializer = new Serializer([$this->normalizer, $propertyNormalizer]); $this->normalizer->setSerializer($serializer); }