supportsDenormalization('', SetAddresseesCommand::class, 'json')); self::assertFalse($denormalizer->supportsDenormalization('', stdClass::class, 'json')); } public function testDenormalize() { $denormalizer = $this->buildDenormalizer(); $actual = $denormalizer->denormalize(['addressees' => [['type' => 'user'], ['type' => 'user_group']]], SetAddresseesCommand::class, 'json'); self::assertInstanceOf(SetAddresseesCommand::class, $actual); self::assertIsArray($actual->addressees); self::assertCount(2, $actual->addressees); self::assertInstanceOf(User::class, $actual->addressees[0]); self::assertInstanceOf(UserGroup::class, $actual->addressees[1]); } private function buildDenormalizer(): SetAddresseesCommandDenormalizer { $normalizer = $this->prophesize(DenormalizerInterface::class); $normalizer->denormalize(Argument::any(), User::class, 'json', Argument::any()) ->willReturn(new User()); $normalizer->denormalize(Argument::any(), UserGroup::class, 'json', Argument::any()) ->willReturn(new UserGroup()); $denormalizer = new SetAddresseesCommandDenormalizer(); $denormalizer->setDenormalizer($normalizer->reveal()); return $denormalizer; } }