4

我正在使用JMSSerializer爲我正在開發的Symfony2項目創建JSON響應,並試圖爲每個響應構建單元測試,但是我點擊了變體如下:JMS序列化程序在Symfony2中運行PHPUnit測試時未讀取配置文件

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(); 

我試着在單元測試中生成串行器時設置config目錄:

$serializer = SerializerBuilder::create()->addMetadataDir('path-to-dir')->build(); 

但是,這並沒有解決問題,我檢查了文檔並且它會告訴您列出文件的完整路徑

「因此,如果您的類名爲Vendor \ Package \ Foo,則元數據文件需要位於$ someDir/Vendor.Package中。 。美孚(XML |陽明)「。

而是試圖獲取生成:

JMS\Serializer\Exception\InvalidArgumentException: The directory "path-to-file" does not exist. 

我失去了一些東西明顯?

感謝

回答

7

JMSSerializer緩存配置文件中的第一次讀取它們,你要清楚測試環境的緩存中:

php app/console cache:clear -e test 
相關問題