使用uniqid的PHPUnit表单

时间:2015-10-23 07:51:04

标签: phpunit sonata

我第一次测试PHPUnit。我想在表单上输入值。但是“name”attribut的值是前缀 uniqid() ...所以我找不到输入字段...这里的形式:

<input type="text" id="s5629e61aaa5fa_titre" name="s5629e61aaa5fa[titre]" required="required" class=" form-control">

这是我想要的功能测试:

    $form = $crawler->filter('button[type=submit]')
                ->eq(0)
                ->form( array(''));

    var_dump($form);

    $form['titre'] = "Mon titre";

2 个答案:

答案 0 :(得分:1)

今天,我遇到了同样的挑战。 @rafrsr的解决方案确实有效,但似乎不是一种正确的方法。一种更简单的方法是将这个uniqid值覆盖到对你来说意味着什么的东西。所以我的解决方案是将此方法添加到相关的SonataAdmin类:

public function getUniqId()
{
    return 'my_custom_form_name';
}

现在您可以使用此名称而不是随机值:

$form = $crawler->filter('form')->form();
$form["my_custom_form_name[name]"]->setValue('Size');

答案 1 :(得分:0)

对于SonataAdmin和symfony功能测试:

$form = $crawler->filter('form')->form();
/** @var string $uniqid */
parse_str(parse_url($form->getFormNode()->getAttribute('action'))['query']);
$form["{$uniqid}[name]"]->setValue('Size');