symfony - 在 Symfony2 中运行 PHPUnit 测试时,JMS Serializer 不读取配置

标签 symfony phpunit jmsserializerbundle serialization

我正在使用 JMSSerializer 为我正在处理的 Symfony2 项目创建 JSON 响应,并尝试为每个响应构建单元测试,但我遇到了以下变体:

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)。”

但尝试获取生成:
JMS\Serializer\Exception\InvalidArgumentException: The directory "path-to-file" does not exist.

我错过了一些明显的东西吗?

谢谢

最佳答案

JMSSerializer 在第一次读取配置文件时会缓存它们,您必须使用以下命令清除测试环境的缓存:

php app/console cache:clear -e test

关于symfony - 在 Symfony2 中运行 PHPUnit 测试时,JMS Serializer 不读取配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986953/

相关文章:

php - Symfony Cache doctrine/orm/Proxies failed to open stream/Proxy/AbstractProxyFactory.php 209 行

php - 我可以在 PHPUnit 中使用 "Mock"时间吗?

Phpunit,模拟 SoapClient 是有问题的(模拟魔术方法)

symfony - JMS Serializer 使用抽象父类反序列化

json - Symfony 将 JMS 序列化程序与 JsonResponse 结合使用

PHP7 + Symfony 3.1.0 + Vagrant : Failed to write session data

symfony - FOSUserBundle "Register"路由重定向到 "Login"路由

php - Symfony Rest Controller 限制序列化深度

php - Symfony 3 中 FilesystemAdapter 的默认缓存目录在哪里?

php - fatal error : Class 'PHPUnit_Framework_TestCase' not found