2017-04-19 43 views
0

我试图从一个给定的阵图数据,以与JMS串行器的对象(在一个单元测试)来测试一个学说实体:JMS串行忽略教义实体ID

鉴于是一个简单的实体类型:

/** 
* CashPosition 
*/ 
class CashPosition 
{ 
    /** 
    * @var integer 
    */ 
    protected $cashPositionId; 

    /** 
    * @var \DateTime 
    */ 
    protected $date; 

    /** 
    * @var float 
    */ 
    protected $value; 


    /** 
    * Get cashPositionId 
    * 
    * @return integer 
    */ 
    public function getCashPositionId() 
    { 
     return $this->cashPositionId; 
    } 

    /** 
    * Set date 
    * 
    * @param \DateTime $date 
    * 
    * @return $this 
    */ 
    public function setDate($date) 
    { 
     $this->date = $date; 

     return $this; 
    } 

    /** 
    * Get date 
    * 
    * @return \DateTime 
    */ 
    public function getDate() 
    { 
     return $this->date; 
    } 

    /** 
    * Set value 
    * 
    * @param string $value 
    * 
    * @return $this 
    */ 
    public function setValue($value) 
    { 
     $this->value = $value; 

     return $this; 
    } 

    /** 
    * Get value 
    * 
    * @return float 
    */ 
    public function getValue() 
    { 
     return $this->value; 
    } 
} 

我定义下的资源\设置\串行\ Entity.CashPosition.yml

MyBundle\Entity\CashPosition: 
    exclusion_policy: ALL 
    access_type: public_method 
    properties: 
    cashPositionId: 
     exclude: false 
     expose: true 
     type: integer 
     access_type: property 
    date: 
     exclude: false 
     expose: true 
     type: DateTime<'Y-m-d'> 
    value: 
     exclude: false 
     expose: true 
     type: float 

序列化,并试图序列化测试覆盖此:

public function testSerialization() 
{ 
    $data = [ 
     'cashPositionId' => 1, 
     'date'   => date('Y-m-d'), 
     'value'   => 1.0, 
    ]; 

    /* @var $serializer Serializer */ 
    $serializer = $this->container->get('serializer'); 

    $cashPosition = $serializer->fromArray($data, CashPosition::class); 
    $this->assertInstanceOf(CashPosition::class, $cashPosition); 
    $this->assertEquals($data, $serializer->toArray($cashPosition)); 
} 

但是由于fromArray方法没有设置cashPositionId,所以测试失败。我尝试了一些与访问类型不同的配置,但没有运气。我不确定这里有什么问题。

我使用JMS串行以下版本:

jms/metadata       1.6.0 Class/method/property metadata management in PHP 
jms/parser-lib       1.0.0 A library for easily creating recursive-descent parsers. 
jms/serializer       1.6.2 Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML. 
jms/serializer-bundle     1.4.0 Allows you to easily serialize, and deserialize data of any complexity 

回答

1

你好,我想你会错过cashPositionId的serialized_name属性,默认情况下,JMS会转化驼情况下蛇的情况下的性能。

JMS Doc

+0

谢谢。我错过的那件事... – torsten