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
谢谢。我错过的那件事... – torsten