私が取り組んでいる Symfony2 プロジェクトの JSON 応答を作成するために JMSSerializer を使用しており、各応答の単体テストを作成しようとしていますが、以下のバリエーションをヒットしています:
JMS\Serializer\Exception\RuntimeException: You must define a type for FooBundle\Entity\Bar::$name.
シリアライザーに YML 構成を使用していますが、応答を生成するときに完全に機能します。
#src/FooBundle/Resources/config/serializer/Entity.Bar.yml
FooBundle\Entity\Bar:
exclusion_policy: none
properties:
id:
exclude: true
type: integer
name:
type: string
どういうわけか構成をプリロードする必要があるかどうか疑問に思い、このリンクを見つけました: http://jmsyst.com/libs/serializer/master/configurationメタデータパスを構成するだけでなく、ファイルサフィックスを含めるように言っています:
$serializer =
JMS\Serializer\SerializerBuilder::create()
->addMetadataDir($someDir)
->build();
単体テストでシリアライザーを生成するときに構成ディレクトリを設定しようとしました:
$serializer = SerializerBuilder::create()->addMetadataDir('path-to-dir')->build();
しかし、これで問題は解決しませんでした。ドキュメント ページをもう一度確認したところ、ファイルへのフル パスをリストするように指示されています。
「そのため、Vendor\Package\Foo という名前のクラスの場合、メタデータ ファイルは $someDir/Vendor.Package.Foo.(xml|yml) に配置する必要があります。」
しかし、getしようとすると次が生成されます:
JMS\Serializer\Exception\InvalidArgumentException: The directory "path-to-file" does not exist.
明らかな何かが欠けていますか?
ありがとう
ベン