[Serializer] Improve messages for unexpected resources values
This commit is contained in:
parent
2ecd7936b1
commit
ad2ce276c7
|
@ -426,7 +426,7 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
|
|||
return $this->appendNode($parentNode, $data, 'data');
|
||||
}
|
||||
|
||||
throw new NotEncodableValueException(sprintf('An unexpected value could not be serialized: %s', var_export($data, true)));
|
||||
throw new NotEncodableValueException(sprintf('An unexpected value could not be serialized: %s', !\is_resource($data) ? var_export($data, true) : sprintf('%s resource', get_resource_type($data))));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -164,7 +164,7 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
|
|||
throw new NotNormalizableValueException(sprintf('Could not normalize object of type %s, no supporting normalizer found.', \get_class($data)));
|
||||
}
|
||||
|
||||
throw new NotNormalizableValueException(sprintf('An unexpected value could not be normalized: %s', var_export($data, true)));
|
||||
throw new NotNormalizableValueException(sprintf('An unexpected value could not be normalized: %s', !\is_resource($data) ? var_export($data, true) : sprintf('%s resource', get_resource_type($data))));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,7 @@ namespace Symfony\Component\Serializer\Tests\Encoder;
|
|||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Serializer\Encoder\XmlEncoder;
|
||||
use Symfony\Component\Serializer\Exception\NotEncodableValueException;
|
||||
use Symfony\Component\Serializer\Normalizer\CustomNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
|
@ -679,6 +680,14 @@ XML;
|
|||
$this->assertEquals($this->createXmlWithDateTimeField(), $actualXml);
|
||||
}
|
||||
|
||||
public function testNotEncodableValueExceptionMessageForAResource()
|
||||
{
|
||||
$this->expectException(NotEncodableValueException::class);
|
||||
$this->expectExceptionMessage('An unexpected value could not be serialized: stream resource');
|
||||
|
||||
(new XmlEncoder())->encode(tmpfile(), 'xml');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return XmlEncoder
|
||||
*/
|
||||
|
|
|
@ -13,6 +13,7 @@ namespace Symfony\Component\Serializer\Tests;
|
|||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\Serializer\Exception\NotNormalizableValueException;
|
||||
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\CustomNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\DenormalizerAwareInterface;
|
||||
|
@ -328,6 +329,14 @@ class SerializerTest extends TestCase
|
|||
|
||||
$this->assertEquals(new Foo(new Bar('baz')), $serializer->deserialize($jsonData, Foo::class, 'json'));
|
||||
}
|
||||
|
||||
public function testNotNormalizableValueExceptionMessageForAResource()
|
||||
{
|
||||
$this->expectException(NotNormalizableValueException::class);
|
||||
$this->expectExceptionMessage('An unexpected value could not be normalized: stream resource');
|
||||
|
||||
(new Serializer())->normalize(tmpfile());
|
||||
}
|
||||
}
|
||||
|
||||
class Model
|
||||
|
|
Reference in New Issue