4

私が取り組んでいる 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.

明らかな何かが欠けていますか?

ありがとう

ベン

4

1 に答える 1