I'm using JMSSerializer to create JSON responses for a Symfony2 project I'm working on and a trying to build unit tests for each response but I'm hitting variations of the below:
JMS\Serializer\Exception\RuntimeException: You must define a type for FooBundle\Entity\Bar::$name.
I'm using YML config for the serializer and it works perfectly when generating responses.
#src/FooBundle/Resources/config/serializer/Entity.Bar.yml
FooBundle\Entity\Bar:
exclusion_policy: none
properties:
id:
exclude: true
type: integer
name:
type: string
I wondered if I need to preload the config somehow and found this link: http://jmsyst.com/libs/serializer/master/configuration that says to configure a metadata path but also to include a file suffix:
$serializer =
JMS\Serializer\SerializerBuilder::create()
->addMetadataDir($someDir)
->build();
I've tried setting the config directory when generating the serializer in the unit test:
$serializer = SerializerBuilder::create()->addMetadataDir('path-to-dir')->build();
But this didn't resolve the problem, I checked the documentation page again and it tells you to list a full path to a file
"So, if you class would be named Vendor\Package\Foo, the metadata file would need to be located at $someDir/Vendor.Package.Foo.(xml|yml)."
but trying get generates:
JMS\Serializer\Exception\InvalidArgumentException: The directory "path-to-file" does not exist.
Am I missing something obvious?
Thanks
Ben
JMSSerializer caches the configuration files the first time it reads them, you have to clear the test environment's cache with:
php app/console cache:clear -e test
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With