在单元测试表单中验证日期时间字段失败

时间:2015-01-20 12:11:26

标签: php unit-testing symfony datetime phpunit

我正在编写单元测试,但我无法通过日期时间字段的验证。这是导致问题的领域的实体:

class Page
{

    /**
     * @var \DateTime
     * @Assert\NotBlank(message="NOT_EMPTY")
     * @ORM\Column(name="end_date", type="datetime", nullable=true)
     */
     private $date;

 }

这是我的单元测试:

$form = $crawler->filter('#addNew')->form();
$date = new \DateTime();
$params = array(
    'formpage[title]' => 'Unitest sample',
    'formpage[date]'  => $date->format('Y-m-d H:i:s')
);
$form->setValues($params);
$client->submit($form);

这是我使用调试器捕获的错误,$ form-> isValid()返回false:

Symfony\Component\Validator\ConstraintViolation
This value is not valid
Unable to reverse value for property path "date": Date parsing failed: U_PARSE_ERROR

知道问题可能是什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我认为由于预期的format而失败了。

您似乎已将您的小部件定义为single_text但未指定格式(或您指定的格式与您正在发送的格式不一致)。如果widget是single_text(没有H:i:s部分),则默认格式为yyyy-MM-dd

纠正这个问题,它应该有效。

相关问题